kubernetes、容器部署jenkins,详细配置gitee CICD - 图1

kubernetes、容器部署jenkins,详细配置gitee CICD - 图2

kubernetes、容器部署jenkins,详细配置gitee CICD - 图3

kubernetes、容器部署jenkins,详细配置gitee CICD - 图4

kubernetes、容器部署jenkins,详细配置gitee CICD - 图5
需要安装一下gitee插件:
kubernetes、容器部署jenkins,详细配置gitee CICD - 图6

凭证

如果类型中只有一种SSH Username with private key,则需要进入系统管理进行配置:
image.png
点击管理jenkins、凭据配置:
image.png
添加其他几种类型的凭据后应用、保存:
image.png
此时在配置gitee地址的地方,凭据下拉列表就有了刚才配置的类型:
image.png
凭据中类型选择,用户名密码。地址用http的:
image.png

构建触发器中才能出现:Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL:
kubernetes、容器部署jenkins,详细配置gitee CICD - 图12

  1. Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied

是因为宿主机上的docker.sock挂载到Pod里后,用户所属于root,而镜像里用的是jenkins用户,所以我把jenkins默认用户在打镜像时改成了root

然而如果在jenkins的slave容器中,执行以下的构建脚本:

  1. mvn install
  2. ls -l /path/to/local/repo/org/linlinjava/litemall-all/0.1.0/
  3. # 构建镜像
  4. cat > Dockerfile << EOF
  5. FROM openjdk:8-jdk-alpine
  6. WORKDIR /usr/local/
  7. RUN ls -l /path/to/local/repo/org/linlinjava/litemall-all/0.1.0/
  8. ADD /path/to/local/repo/org/linlinjava/litemall-all/0.1.0/litemall-all-0.1.0-exec.jar /usr/local/
  9. ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/usr/local/litemall-all-0.1.0-exec.jar"]
  10. EOF
  11. docker build -t litemall-all:$BUILD_VERSION .
  12. # 升级
  13. kubectl set image deploy litemall-all litemall-all=litemall-all:$BUILD_VERSION

执行流水线时,将会报出如下面的错误:

  1. [INFO] Installing /home/jenkins/agent/workspace/Gitee/litemall-all/target/litemall-all-0.1.0-exec.jar to /path/to/local/repo/org/linlinjava/litemall-all/0.1.0/litemall-all-0.1.0-exec.jar
  2. [INFO] ------------------------------------------------------------------------
  3. [INFO] Reactor Summary for litemall 0.1.0:
  4. [INFO]
  5. [INFO] litemall ........................................... SUCCESS [ 1.571 s]
  6. [INFO] litemall-db ........................................ SUCCESS [ 9.351 s]
  7. [INFO] litemall-core ...................................... SUCCESS [ 1.310 s]
  8. [INFO] litemall-wx-api .................................... SUCCESS [ 0.902 s]
  9. [INFO] litemall-admin-api ................................. SUCCESS [ 1.304 s]
  10. [INFO] litemall-all ....................................... SUCCESS [ 0.583 s]
  11. [INFO] ------------------------------------------------------------------------
  12. [INFO] BUILD SUCCESS
  13. [INFO] ------------------------------------------------------------------------
  14. [INFO] Total time: 15.468 s
  15. [INFO] Finished at: 2019-12-16T09:21:07Z
  16. [INFO] ------------------------------------------------------------------------
  17. + cat
  18. + docker build -t litemall-all:2019-12-16-09-20-34 .
  19. Sending build context to Docker daemon 228.2MB
  20. Step 1/4 : FROM openjdk:8-jdk-alpine
  21. ---> a3562aa0b991
  22. Step 2/4 : WORKDIR /usr/local/
  23. ---> Using cache
  24. ---> 34194b26c227
  25. Step 3/4 : ADD /path/to/local/repo/org/linlinjava/litemall-all/0.1.0/litemall-all-0.1.0-exec.jar /usr/local/
  26. ADD failed: stat /var/lib/docker/tmp/docker-builder730816274/path/to/local/repo/org/linlinjava/litemall-all/0.1.0/litemall-all-0.1.0-exec.jar: no such file or directory
  27. Build step 'Execute shell' marked build as failure
  28. Finished: FAILURE

mvn install后的编译jar包,执行docker buildADD到镜像内时,会报错:/var/lib/docker/tmp/docker-builder730816274/............

kubernetes、容器部署jenkins,详细配置gitee CICD - 图13

参考

解决我的问题:kubernetes里部署jenkins踩坑之路(Docker in Docker)
jenkins配置码云自动部署
容器内执行docker命令
Docker In Docker:关于docker中执行docker命令的实践
在您的CI或测试环境中使用Docker-in-Docker?三思而后行
Docker in Docker?