一. 安装,启动Jenkins服务
-
之前通过docker运行jenkins,发现到最后shell命令都是在容器里执行,如果用docker命令根本不能执行,就用centos运行了一个jenkins。
-
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
-
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
-
yum install jenkins
-
vim /etc/sysconfig/jenkins 修改JENKINS_PORT
-
service jenkins start
-
service jenkins stop
-
service jenkins restart
二. 执行Shell脚本
-
全局,系统,Job配置之前blog已有。
-
大致步骤
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 " (dockerps−a−q−f"name=flink−server")"和test!−z"(docker images -q --filter reference=flink-server)” 判断容器和镜像为不为空。
1.6 重新构建镜像,运行容器。注:
- 中间执行shell遇到过mv命令权限拒绝(Permission denied),可通过chnod 777赋予可读写可执行。
- 还有一个权限问题 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
点两次看输出日志