jenkins发布项目

在构建项目之前我们需要做一些配置,安装一些插件

  • 点击系统管理

  • 点击插件管理

  • 需要安装一下这个maven插件

  • 插件安装完成之后我们需要配置一下全局工具 "系统管理>全局工具配置"


注意:安装了jdk 就不要在点自动安装了

这里需要配置一下jdk , 别名随便输入,JAVA_HOME填写安装jenkins的服务器上面的JAVA_HOME就行
如果是linux机器输入 下面的命令可以看到

[root@jk ~]# echo $JAVA_HOME
/home/vsftpd/root/jdk1.8.0_201
  • jdk配置完成之后还需要配置一下maven(前提是服务器装了maven)


和jdk配置差不多,这里要注意,如果HOME路径不存在就会报上图的错误,填写正确就不会报错,同样输入下面的命令可以看到MAVEN_HOME

[root@jk ~]# echo $MAVEN_HOME
/opt/maven/apache-maven-3.6.3
  • 暂时我们就配置这两个,点击保存、应用就可以了


到这里我们的前期准备工作已经做好了,下面可以开始正式构建项目了

  • 首先我们这里构建一个maven项目,输入自己的项目名称,点击完成。

  • 然后我们进入构建配置页面,配置一下构建参数

  • 这里我们使用参数化构建,选择字符参数(其他类型参数可以自己尝试一下)

选择字符参数后会出现以下界面

这里配置下项目名称(这个是可有可无的,这里主要是测试下参数化配置,后期有其他参数需要传递在详细配置)

  • 接下来是源码管理配置

url输入自己的Git项目路径
Credentials 是需要验证git的登录信息
点击图中的 “添加” 按钮
输入自己登录git的用户名密码就可以
分支默认就行,如果有自己分支,输入分支名称就行

注意:这里必须在安装jenkins的服务器上安装有git才行,否则待会构建项目会报错。
  • 触发器这里选择默认就行

  • 接下来就行构建前后执行的命令配置

  • pre steps 为构建前执行,这里我们选择执行 shell

输入下面的执行shell 脚本的命令 (脚本文件是项目中编写好的,文章后面会给出来)

/bin/bash runPre.sh ${PRODUCT_NAME}

  • build中需要填写构建的pom.xml文件

(这里是单个项目直接填写pom.xml就行,如果是maven父子工程,填写父工程的pom.xml文件地址)

Goals and options:是构建项目执行的maven命令
(这里是通过docker-maven-plugin 插件将项目构建为一个docker镜像,shell脚本主要也是控制docker镜像的启动,停止,删除)

clean package docker:build
#需要push要私有仓库的添加下面的命令
clean package docker:build -DpushImage

Post Steps : 为构建后参数(运行脚本文件,主要是通过镜像启动容器)

/bin/bash runPost.sh ${PRODUCT_NAME}

到这里配置就OK了,点击保存退出就行

可以看到我们项目现在大概是这样的

下面我们再来看一下项目结构

这里我就写了一个测试controller
Dockerfile文件可以不要(主要的之前测试了用dockerfile文件和用配置两种情况)

  • 配置文件内容如下
 <build><finalName>jenkins</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><!-- 定义镜像名 --><imageName>${project.artifactId}:${project.version}</imageName><!-- 基础镜像,编译为镜像时会下载jdk--><baseImage>java</baseImage> <workdir>/</workdir><cmd>["java", "-version"]</cmd><!-- 相当于 java -jar  jenkins.jar--><entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources><!-- 远程docker地址 没有配置docker远程访问的需要配置一下 --><dockerHost>http://1.1.1.1:2375</dockerHost></configuration></plugin></plugins></build>

这里对于初步接触dockerfile配置的来说可以理解为
编译docker镜像,当我们通过镜像启动容器时会执行下面的命令

  • 为docker镜像起名为${project.artifactId}:${project.version}

  • 在容器中下载并按照jdk

  • 执行 java -version 命令

  • 执行java -jar ${project.build.finalName}.jar 命令

这样容器就启动起来了。

开启docker远程访问

  • 最后在看一下shell文件(runPre.sh)
#! /bin/shdockerPs=`sudo docker ps | grep -w $1 | head -n 1 | awk '{print $1}'`
if [ "$dockerPs" != "" ];thensudo docker stop $dockerPsif [ $? -eq 0 ];thenecho "$dockerPs 容器已停止"fi
fidockerPsAll=`sudo docker ps -a | grep -w $1 | head -n 1 | awk '{print $1}'`
if [ "$dockerPsAll" != "" ];thensudo docker rm $dockerPsAllif [ $? -eq 0 ];thenecho "$dockerPsAll 容器已删除"fi
fiimage=`sudo docker images | grep -w $1 | head -n 1 | awk '{print $3}'`
if [ "$image" != "" ] ;thensudo docker rmi $imageif [ $? -eq 0 ];thenecho "$image 镜像已删除"fi
fi
  • runPost.sh
#! /bin/shimage=`sudo docker images | grep -w $1 | head -n 1 | awk '{print $3}'`#启动容器
sudo docker run -itd --name $1 -p 31002:31002 $imageif [ $? -eq 0 ];thenecho "$1 容器已启动"
fi

这里注意项目文件放的位置不要随意改动。

  • 下面我们就可以开始构建项目了,点击 Build with Parameters,在点击开始构建

  • 可以看到项目就开始构建

  • 点击 #24 这次构建进去看下日志


这里可以看到,它是先去我们给定的git地址下载项目,然后执行我们配置好的runPre.sh 脚本
这里因为我之前构建过,所以会出现删除容器,第一次构建不会出现
然后就开始执行docker-maven的构建操作
构建完成之后就会执行我们设置的脚本 runPost.sh (启动容器)

这里可以看到容器启动成功了。
网页输入地址就可以访问到我们的程序
后面我们改了代码,直接提交git,然后点击构建项目就行
(jenkins是可以自动构建了,这里主要的初步构建,就没有在说自动构建的情况)

服务器上输出 docker ps 可以看到我们构建的容器正在运行中

[root@jk ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                                                                        NAMES
5a9f773f94ff        759df2d31d10          "java -jar jenkins.j…"   6 minutes ago       Up 6 minutes        0.0.0.0:31002->31002/tcp                                                                     jenkin
s
079205d605c3        rabbitmq:management   "docker-entrypoint.s…"   3 days ago          Up 3 days           4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   rabbit
mq
c6f4d59b04c5        bcef5fd2979d          "docker-entrypoint.s…"   3 weeks ago         Up 8 days           0.0.0.0:27017->27017/tcp                                                                     mongo
1093a905e2cc        6678c7c2e56c          "nginx -g 'daemon of…"   4 weeks ago         Up 2 days           0.0.0.0:8081->80/tcp                                                                         nginx
4b02188b00fe        registry              "/entrypoint.sh /etc…"   4 weeks ago         Up 5 days           0.0.0.0:5000->5000/tcp                                                                       vigoro
us_williamson

注 : 第一次启动可能会报以下错误sudo: no tty present and no askpass program specified

附上解决方法

jenkin+docker 构建项目相关推荐

  1. 基于Docker安装Jenkin并部署项目

    基于Docker安装Jenkin并部署项目 一.安装 1.1 安装Docker 点击查看笔记:Docker安装 1.2 安装Docker Compose # 1.下载文件,使用的是国内镜像 curl ...

  2. 使用Maven构建项目Docker镜像并上传至阿里云镜像仓库

    前言 前面介绍了Docker的一些安装.镜像加速.构建镜像 并推送至服务器 , 今天在前面的基础上新增配置 , 使项目可以具备构建镜像后将包推送至远端仓库的能力 ​​​​​​Docker是什么?有什么 ...

  3. jenkin+maven+git构建项目

    前提条件: Jenkins安装好maven插件,git插件 在manage jenkins-> global tool configuration中 配置jdk 配置Git 配置maven 新建 ...

  4. docker简单介绍、安装使用、常用命令、docker构建springboot项目、k8s安装

    docker简单介绍 docker的意义 把事情简单化 Docker友好的基于CLI的工作流使各种技能水平的开发人员都可以访问构建,共享和运行容器化应用程序. 快速移动 从单个软件包安装即可在几分钟内 ...

  5. sonar检测java vue项目_Jenkins集成SonarQube 实现构建项目同时审查代码

    软件版本: SonarQube:7.7 Jenkins:2.164.3 一.简介 SonarQube是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题.同时,它提 ...

  6. 用 Docker 构建、运行、发布来一个 Spring Boot 应用

    原文同步至 http://waylau.com/docker-spring-boot/ 本文演示了如何用 Docker 构建.运行.发布来一个 Spring Boot 应用. Docker 简介 Do ...

  7. docker部署项目 dockerfile 实战 SpringBoot、flask

    1 SpringBoot微服务打包Docker镜像 1.1 构建springboot项目 package com.example.springboot.demo;import org.springfr ...

  8. iis7 您无权使用所提供的凭据查看此目录或页面。_使用Spring Cloud和Docker构建微服务架构

    原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do作者:Alexander Lukyanc ...

  9. 使用docker构建并测试一个基于Sinatra的Web应用程序

    内容来自<第一本Docker书>5.2节和博文整理而成 使用Docker构建并测试Web应用程序 在这个例子里,我们将创建一个应用程序,它接收输入的URL参数,并以JSON散列的结构输出到 ...

最新文章

  1. c#第一个程序-计算平方根
  2. 如何在spring中读取properties配置文件里面的信息
  3. IPC$连接常见问答
  4. 字典转模型的过程中,空值和id特殊字符的处理
  5. 公布自己的pods到CocoaPods trunk 及问题记录
  6. CF1158D. Beautiful Array
  7. 使用直接内存时可以更快
  8. 搭建微信令牌中控服务器,使用ThinkJs搭建微信中控服务的实现方法
  9. AI修复技术为何这么强?原来背后的技术是……
  10. android 有序广播例子,有序广播的实例解析--android案例《拦截有序广播》
  11. 运行在MAMP Pro上的PhP和Mysql更改版本教程
  12. Web开发中常用的linux命令 详解
  13. SlickEdit介绍
  14. Visual Assist X 10.8.2001 破解版 支持VC2013及以下版本
  15. 发邮件向论文作者卑微求代码模板
  16. 常见高斯型求积公式简介
  17. mysql启动报错2002_Mysql启动报ERROR:2002的分析与解决
  18. Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered d
  19. 奥特曼html代码,和平精英捏脸代码奥特曼
  20. 冰河浅析 - 揭开木马的神秘面纱(下)

热门文章

  1. 微服务之SpringCloud服务调用
  2. 机器学习中对核函数的理解
  3. 封箱机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  4. 智慧园区管理系统为园区提供统一运维管理服务
  5. python 爬虫入门--抓取名著古籍
  6. 世纪互联与富士康结盟有感
  7. urdf和rviz的初步使用
  8. 推荐免费下载430套大型商业源码 ERP源码 企业信息化管理咨询
  9. 音视频测试的基础概念
  10. 小度会是下一个苹果吗?