jenkins+git+maven+docker发布

1.jenkins安装.

这个太简单略过。

2.插件安装

需要安装以下插件,插件源地址请使用以下地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

Git Parameter git参数构建插件

Maven Integration maven项目构建插件

SSH Publish Over SSH

3.全局配置

系统配置,需要配置publish over ssh,相关配置如下

name:配置一个名称 具有标识性的 我这里随便写的

hostname: 主机名或者ip地址

username:主机账户

password: 主机密码   这里我选择的密码认证,可以选择key认证

remote directory:远程工作目录

全局工具配置

按照自己的实际情况填写

4.构建项目

新建任务———构建一个maven项目

选择参数化构建过程-添加一个git parameter  一个string parameter

git parameter 定义名称为release_brach  string parameter 定义名称为project_name

源码管理-选择git  添加git仓库地址和认证,我这里这个仓库无需认证

构建触发器,选择轮询

Build 设置maven构建的一些参数

构建后操作-send build artifacts over ssh

name  系统设置里面的publish over ssh

source files   构建后包的相对地址  workspace的相对路径

remove prefix   要过滤的  这里我们去掉target  只保留他下面的war包

remote directory   相对于publish over ssh 工作目录的相对路径    这里是/data0/dockerfiles/$project_name

exec command   要执行的脚本  脚本地址写绝对路径 后面是参数

deploy.sh  相关内容

#!/bin/bash
parasnum=5
# function
help_msg()
{
cat << help
+----------------------------------------------------+
+ Error Cause:
+ you enter $# parameters
+ the total paramenter number must be $parasnum
+ 1st :DOCKER_NAME
+ 2nd :PROJECT_NAME
+ 3rd :PROJECT_VERSION
+ 4th :SOURCE_PORT
+ 5th :DESTINATION_PORT
+----------------------------------------------------+
help
}
# ----------------------------------------------------
# Check parameter number
# ----------------------------------------------------
if [ $# -ne ${parasnum} ]
then
        help_msg 
        exit
fi
# ----------------------------------------------------
# Initialize the parameter.
# ----------------------------------------------------
DOCKER_NAME=$1
PROJECT_NAME=$2
PROJ_VERSION=$3
SPORT=$4
DPORT=$5
PROJ_VERSION=${PROJ_VERSION/"origin/"/""}
DOCKER_FILE="/data/dockerfiles/${DOCKER_NAME}/Dockerfile"
DOCKER_FILE_DIR=/data/dockerfiles/${DOCKER_NAME}
if [ ! -d ${DOCKER_FILE_DIR} ]; then
        mkdir -p ${DOCKER_FILE_DIR}
fi
# ----------------------------------------------------
# check docker images
# ----------------------------------------------------
DOCKER_IMAGE=`/usr/bin/docker images | grep ${DOCKER_NAME} | awk -F ' ' '{print $3}'`
if [ -n "${DOCKER_IMAGE}" ]; then
        # check docker container
        for dc in `/usr/bin/docker ps -a | grep ${DOCKER_NAME} | awk -F " " '{print $1}'`
        do
                echo "Stop container: ${dc}"
                /usr/bin/docker stop ${dc}
                # delete while docker container was exists
                echo "##Delete exists Container_Id: "${dc}
                /usr/bin/docker rm ${dc}
        done
        # delete while docker image was exists
        echo "##Delete exists Image: "${DOCKER_IMAGE}
        /usr/bin/docker rmi ${DOCKER_IMAGE} 
fi
echo ""
# ----------------------------------------------------
# Init dockerfile
# ----------------------------------------------------
echo "**Init dockerfile start: "${DOCKER_FILE}
echo "FROM daocloud.io/library/tomcat:8.5-jre8-slim" > ${DOCKER_FILE}
echo "ADD *.war /usr/local/tomcat/webapps/${PROJECT_NAME}.war" >> ${DOCKER_FILE}
echo "EXPOSE 8080" >> ${DOCKER_FILE}
echo "CMD /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out" >> ${DOCKER_FILE}
cat ${DOCKER_FILE}
echo "**Init dockerfile end."
# ----------------------------------------------------
# Build dockerfile
# ----------------------------------------------------
cd ${DOCKER_FILE_DIR}
echo "##Build dockerfile for "${DOCKER_NAME}
/usr/bin/docker build -t ${DOCKER_NAME}:${PROJ_VERSION} . 
# ----------------------------------------------------
# Run docker container
# ----------------------------------------------------
echo ""
echo "##Running docker container: "${DOCKER_NAME}
/usr/bin/docker run --name ${DOCKER_NAME}_d1 -d -p ${SPORT}:${DPORT} ${DOCKER_NAME}:${PROJ_VERSION}
#/usr/bin/docker run ${cmd}
echo ""

完成后保存即可

选择build with parameter – 设置对应的变量

等待构建后会在对应的主机上启动一个docker容器  目标主机需要提前安装docker服务


jenkins+git+maven+docker发布
http://www.jcwit.com/article/156/
作者
Carlos
发布于
2019年4月29日
许可协议