Jenkins——发布项目到docker

本文是基于Jenkins部署在Windows Server,通过把项目推送到远程服务器,使用远程服务器上的docker构建镜像并运行
Jenkins——发布项目到docker_第1张图片
本文涉及docker的相关命令和使用
均为alpha0808大佬的指导

Jenkins——发布项目到docker_第2张图片

目录

  • 一、准备工作
  • 二、配置全局
    • maven配置文件
    • jdk
    • git
    • maven
    • sh配置(windows)
  • 三、发布项目
    • 3.1 新建项目
    • 3.2 常规配置
      • 3.2.1 丢弃旧的构建
      • 3.2.2 设置构建项目参数
      • 3.2.3 源码管理
  • 四、构建和发布
    • 4.1 构建配置
    • 4.2 发布
    • 4.3 构建

一、准备工作

  1. 部署Jenkins,详情见Windows下安装Jenkins
  2. 添加插件Multiple SCMs、Publish Over SSH

二、配置全局

在Jenkins上全局配置maven、jdk、git,用于部署java项目。

打开Manage Jenkins,点击Global Tool Configuration

Jenkins——发布项目到docker_第3张图片

maven配置文件

设置服务器中maven的setting.xml的路径

Jenkins——发布项目到docker_第4张图片

jdk

点击安装jdk
在这里插入图片描述
Install automatically(自动安装)勾选去掉,填写服务器上jdk的安装目录
Jenkins——发布项目到docker_第5张图片

git

Install automatically(自动安装)勾选去掉,填写git下bin目录+git
Jenkins——发布项目到docker_第6张图片

maven

点击maven安装
Jenkins——发布项目到docker_第7张图片
Install automatically(自动安装)勾选去掉,填写服务器上maven的目录

Jenkins——发布项目到docker_第8张图片
设置完,点击应用

sh配置(windows)

windows上部署的Jenkins无法自动找打可以执行sh,所以需要配置。
Jenkins——发布项目到docker_第9张图片

Manage JenkinsConfigure SystemShell设置sh作为脚本程序(我这里使用git的sh作为执行脚本程序)

三、发布项目

3.1 新建项目

点击”新建Item
Jenkins——发布项目到docker_第10张图片
输入条目名称,选择"Freestyle project",点击确定

Jenkins——发布项目到docker_第11张图片
创建成功
Jenkins——发布项目到docker_第12张图片

3.2 常规配置

点击条目,选择"配置"
Jenkins——发布项目到docker_第13张图片

3.2.1 丢弃旧的构建

勾选"Discard old builds",设置构建的保持时间和个数,通过删除旧的构建来释放磁盘空间,如果不设置,默认365天删除一次
Jenkins——发布项目到docker_第14张图片

3.2.2 设置构建项目参数

构建项目需要通过参数动态构建时使用。

勾选"This project is parameterized",点击"添加参数",选择对应的参数类型
Jenkins——发布项目到docker_第15张图片

示例:
通过参数version,设置项目的版本,构建jar至nexus使用

选择String Parameter,设置版本参数version
Jenkins——发布项目到docker_第16张图片

3.2.3 源码管理

在实际开发中,我们可以通过svn、git来进行源码管理,因为Jenkins默认只进行了git的源码代理。
在准备工作安装了Multiple SCMs插件,这样就能更自由的选择源码管理方式。这里只说通过Jenkins自带的git源码管理。
设置源码地址:
Jenkins——发布项目到docker_第17张图片
使用ssh的git地址,需要创建对应的凭证,点击"Credential"下的"添加"
Jenkins——发布项目到docker_第18张图片
设置凭据类型:SSH Username with private key
Jenkins——发布项目到docker_第19张图片
设置用户名和对应的ssh凭据(git私钥)
Jenkins——发布项目到docker_第20张图片
设置分支
Jenkins——发布项目到docker_第21张图片

四、构建和发布

4.1 构建配置

在构建页签下,新增构建步骤"invoke top-level Maven targets"
Jenkins——发布项目到docker_第22张图片

4.2 发布

在"构建后操作"页签,点击"增加构建后操作步骤",选择"Send build artifacts over SSH"
Jenkins——发布项目到docker_第23张图片
添加对应远程服务器的ip地址
Jenkins——发布项目到docker_第24张图片
填写文件路径忽视前缀,以及远程服务器的存放文件路径(我这里是默认把整个文件发布到远程服务器)
Jenkins——发布项目到docker_第25张图片
发布后命令,示例如下:

#!/bin/bash
cd jenkinsTest

docker build -t 127.0.0.1/ms/jenkinsTest:1.0.0 .
docker push 127.0.0.1/ms/jenkinsTest:1.0.0

if docker ps -a |awk '{print $NF}'|grep '^jenkinsTest'; then
    docker rm -f jenkinsTest
fi

docker run -d -p 9901:9901 -e JAVA_OPTS="-Xrs -Xms1g -Xmx2g -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m" --env-file=/opt/env.list  -v /data:/data -v /ibase/logs:/ibase/logs  --net=host --name jenkinsTest 127.0.0.1/ms/jenkinsTest:1.0.0

if docker images | grep ""; then
    docker rmi -f $(docker images | grep "" | awk "{print \$3}")
fi

命令解释如下:

切换dockerfile所在目录

#!/bin/bash
cd jenkinsTest

构建镜像,同时将镜像推向仓库

docker build -t 127.0.0.1/ms/jenkinsTest:1.0.0 .
docker push 127.0.0.1/ms/jenkinsTest:1.0.0

镜像启动前,删除对应的进程,将镜像放入容器启动,然后删除所有none镜像或停止的容器

if docker ps -a |awk '{print $NF}'|grep '^jenkinsTest'; then
   docker rm -f jenkinsTest
fi

docker run -d -p 9901:9901 -e JAVA_OPTS="-Xrs -Xms1g -Xmx2g -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m" --env-file=/opt/env.list  -v /data:/data -v /ibase/logs:/ibase/logs  --net=host --name jenkinsTest 127.0.0.1/ms/jenkinsTest:1.0.0

if docker images | grep ""; then
   docker rmi -f $(docker images | grep "" | awk "{print \$3}")
fi

4.3 构建

配置保存完毕,返回条目,点击"build now"搞定
Jenkins——发布项目到docker_第26张图片

你可能感兴趣的:(Jenkins,jenkins,docker,运维)