目标:本地打包推到nexus3私有仓库,Jenkins拉取依赖库自动构建镜像并推送到远端registry镜像私有仓库,docker拉取镜像部署到容器服务
1 本地打包推到nexus3私有仓库
2 gitlab上创建一个或者多个branch
3 Jenkins拉取依赖库自动构建镜像并推送到远端registry镜像私有仓库
参考博客 https://blog.csdn.net/jinking01/article/details/84998892
https://blog.csdn.net/jinking01/article/details/85100065
3.1 gitlab管理项目源码 √
jenkins与gitlab集成 √
(1)安装git和gitlab插件
GitLab
GitLab Logo
Gitlab Authentication
(2)配置GitLab插件
gitlab创建Jenkins用户并授权管理员及项目所有者
jenkins创建自由风格的构建项目
将gitlab的源码纳入管理
【注】注意可能出现下面错误:
Failed to connect to repository : Command “git ls-remote -h http://192.168.1.100:3030/clound-shop-develop/ci-demo.git HEAD”
returned status code 128:
stdout:
stderr: fatal: Authentication failed for ‘http://192.168.1.100:3030/clound-shop-develop/ci-demo.git/’
Error: server certificate verification failed. CAfile:
/etc/ssl/certs/ca-certificates.crt CRLfile: none
无可用证书,稍后配置
4 docker拉取镜像部署到容器
4.1 自由风格Jenkins构建项目配置
- 打包命令
mvn -Dmaven.test.skip=true package -P test
- 复制jar包及Dockerfile到构建目录
cp ./target/ci-demo-1.0.1-bugfix.jar ./Dockerfile /usr/local/app docker build /usr/local/app/ -t ci-demo:latest
- 推送到远端仓库
docker tag ci-demo 192.168.1.100:5000/ci-demo``
docker push 192.168.1.100:5000/ci-demo` - 启动容器
docker run -p 8080:8080 ci-demo
【执行mvn命令出错问题】
$ mvn clean install
FATAL: command execution failed
java.io.IOException: error=2, No such file or directory
解决方案:需要配置maven环境:jekins->configureTools
环境绝对路径如下:
/usr/local/java/jdk1.8.0_231
/usr/local/maven/apache-maven-3.3.9
【构建新同名镜像,历史镜像名称、标签为none问题】
docker images|grep none|awk '{print $3}'|xargs docker rmi
参考博客 https://blog.csdn.net/weixin_33725239/article/details/94198130
4.2 使用宿主机jdk及maven构建镜像
【使用宿主机jdk及maven构建镜像】
#Dockerfile模板
FROM centos
LABEL "AUTHOR"="Max" "EMAIL"="813776775@qq.com"
VOLUME /tmp
ADD ci-demo-1.0.1-release.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8080
ENV JAVA_HOME=/usr/local/jdk MAVEN_HOME=/usr/local/maven
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
CMD [ "sh", "-c", "mvn -Dserver.port=8080 spring-boot:run" ]
ENTRYPOINT ["java", "-jar", "app.jar"]
4.3 使用宿主机jdk及maven启动容器
【使用宿主机jdk及maven启动容器】
docker container run -v /usr/local/java/jdk1.8.0_231:/usr/local/jdk -v /usr/local/maven/apache-maven-3.3.9:/usr/local/maven -p 8080:8080 ci-demo
访问接口
此版本,完成了Jenkins+docker+gitlab+nexus3+registry通过Dockerfile构建镜像及部署