整体思路

  1. Jenkins 拉取远端源码 —— git
  2. 实现应用打包 —— jenkins本地
  3. 把应用程序打包进Docker镜像 —— Dockerfile
  4. 镜像上传到Docker私有仓库 —— shell或者 Docker相关的Jekins插件
  5. 删除老的Docker容器,运行新的Docker容器 —— shell脚本

安装插件(系统设置-插件管理-可选插件)

Build Timestamp Plugin(构建时间戳)
Publish Over SSH (ssh服务,把构建好的文件ssh到相应服务器)
gitee
GitHub plugin(有可能默认已经安装了,负责触发hook)
GitHub API plugin(有可能默认已经安装了,负责触发hook)
nodejs plugin(nodejs服务)
全部装完建议重启jenkins服务, 在服务器上 docker restart jenkins

配置插件

Timestamp

image.png

Publish Over SSH

https://plugins.jenkins.io/publish-over-ssh/
Jenkins通过ssh命令的方式来远程操作另外一个台服务器,配置Publish Over SSH的私钥,宿主机内部私钥。
这个一定要和Jenkins与Git配置公钥私钥拉取代码区分开
image.png
remote directory 就是文件要上传到的目的主机目录,必须存在该路径,(如果不存在目录,不会新建,测试连接的时候会报错)
image.png
image.png

关联github,设置token

github 上生成个人token
image.png
image.png
image.png
image.png
image.png

image.png

Jenkins配置凭据

进入jenkins容器

  1. docker exec -it jenkins /bin/bash
  2. ssh-keygen -t rsa
  3. cd /root/.ssh
  4. 把公钥添加到giteessh里面
  5. 把私钥配置到Jenkins里面(全局工具配置里,不同版本的入口不一样)

Jenkins容器内部公私钥,把私钥配置到Jenkins凭据里面,把公钥添加到gitee的ssh里面
目的主机(宿主机)的公私钥,宿主机公钥配置到凭据里面
image.png

新建流水线job

编写pipeline脚本
源码管理里面设置gitee项目链接,Credentials(Jenkins容器私钥凭据)
在SCM中定义管道
选择SCM选项中的Pipeline脚本后,不要在Jenkins UI中输入任何Groovy代码; 您只需指定要从其中检索Pipeline的源代码中的路径。更新指定的存储库时,只要Pipeline配置了SCM轮询触发器,就会触发一个新构建。

面的流程图是在Jenkins Pipeline中容易建模的一个连续发货方案的示例
image.png

  1. # 文本编辑器,IDE,GitHub等将使用Groovy代码进行语法高亮显示, 第一行Jenkinsfile应该是#!/usr/bin/env groovy Jenkinsfile。
  2. # 只有在命令返回零退出代码时才会继续。任何非零退出代码将失败Pipeline。