Jenkins自动部署SpringCloud(基于Docker)

一. 安装,启动Jenkins服务

  1. 之前通过docker运行jenkins,发现到最后shell命令都是在容器里执行,如果用docker命令根本不能执行,就用centos运行了一个jenkins。

  2. sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

  3. sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

  4. yum install jenkins

  5. vim /etc/sysconfig/jenkins 修改JENKINS_PORT

  6. service jenkins start

  7. service jenkins stop

  8. service jenkins restart

二. 执行Shell脚本

  1. 全局,系统,Job配置之前blog已有。

  2. 大致步骤
    1.1 切换到pom目录,清空target,重新打包。
    1.2 区分dockerfile文件目录,jenkins工作空间目录。
    1.3 判断dockerfile目录是否有jar包,有则删除。
    1.4 重新将jenkins工作目录下的jar包移动到dockerfile所在目录,并且重命名和dockerfile里的一样。
    1.5 判断是否存在具体docker container,有则stop rm rmi。无则再判断是否有镜像,有则rmi删除。
    注:我用的主要是 test -z “ ( d o c k e r p s − a − q − f " n a m e = f l i n k − s e r v e r " ) " 和 t e s t ! − z " (docker ps -a -q -f "name=flink-server")"和test ! -z " (dockerpsaqf"name=flinkserver")"test!z"(docker images -q --filter reference=flink-server)” 判断容器和镜像为不为空。
    1.6 重新构建镜像,运行容器。

    注:

    1. 中间执行shell遇到过mv命令权限拒绝(Permission denied),可通过chnod 777赋予可读写可执行。
    2. 还有一个权限问题 Got permission denied while trying to connect to the Docker。
      解决方案:
      sudo groupadd docker##添加docker相关用户组
      sudo gpasswd -a $user_name docker ##将此用户加入到docker组
      newgrp docker##更新用户组。
echo =======test=======
cd /var/lib/jenkins/workspace/mvn-tst
mvn clean
mvn package

### jenkins
jenkins_home="/var/lib/jenkins/workspace/mvn-tst"

### jenkins 
module_home="/modules/flink-server/target"

### flink server name
server_jar="/flink-server-0.0.1-SNAPSHOT.jar"

server_jar_name="flink-server-0.0.1-SNAPSHOT.jar"

### docker_home
docker_home="/usr/local/dev/big-data/flink"

### judge the flink server is exist
### move before judge the docker jar home is exist
echo ${docker_home}"/flink-server"
if [ -e ${docker_home}"/flink-server" ];then
		rm -rf ${docker_home}"/flink-server" 
		echo "rm docker home flink-server"
fi

### move and rename jar
### jar position
echo ${jenkins_home}${module_home}${server_jar}
### docker position
echo ${docker_home}
mv ${jenkins_home}${module_home}${server_jar} ${docker_home}

cd ${docker_home}

mv ${server_jar_name} "flink-server"

### judge the flink-server image is exist or remove image no verify
if test -z  "$(docker ps -a -q -f "name=flink-server")"; then
    if test ! -z  "$(docker images -q --filter reference=flink-server)"; then
    	docker rmi flink-server
    fi
else
	echo "the flink-server container exist"
    docker stop flink-server
	dokcer rm flink-server
	docker rmi flink-server 
fi
### build Docker image
docker build -t flink-server .
docker run -d --name flink-server -p 8085:8085 flink-server

Jenkins自动部署SpringCloud(基于Docker)_第1张图片

点两次看输出日志

Jenkins自动部署SpringCloud(基于Docker)_第2张图片
Jenkins自动部署SpringCloud(基于Docker)_第3张图片
Jenkins自动部署SpringCloud(基于Docker)_第4张图片
Jenkins自动部署SpringCloud(基于Docker)_第5张图片

看到都已经正确打印。

后续还可以基于此shell编写一键全部,或具体某个容器构建部署,也可以根据不同环境创建不同视图。

你可能感兴趣的:(#,Jenkins,jenkins,docker,java,centos,maven)