Suj*_*ith 7 continuous-integration build release-management jenkins
我们正在使用jenkins进行CI.我们得到深夜建设.一旦我们收到邮件或暗示,有没有办法自动化构建部署?任何建议,将不胜感激..
在 Jenkins 上部署构建的一种机制是使用工件将最新的二进制文件放置在已知位置,然后启动一个使用(受私钥保护的)ssh 的新作业(仅在编译/测试阶段成功时)或 scp 将工件复制到测试/生产计算机,然后执行安装。
我们使用类似的机制进行一些自动化测试。棘手的部分是让 shell 命令来处理 ssh 密钥,因此我们执行以下操作:
eval `ssh-agent -s`
ssh-add ~/.ssh/your_private_key_here
Run Code Online (Sandbox Code Playgroud)
只要该私钥位于 Jenkins 服务器上并且公钥位于您尝试推送到的服务器上,您就可以使用ssh
脚本scp
其余部分中的命令来在相关服务器上执行功能。
如果您更喜欢完全从目标服务器端运行该过程,则可以创建一个在服务器上运行的小脚本,用于检查 Jenkins 服务器构建的工件目录中的新文件。由于有了latest
路径,您不必知道内部版本号即可执行此操作。要查找特定路径,您可以登录 Jenkins 服务器(保存至少一个工件后),找到您正在使用的项目并查看 Last Success Artifacts,这将是最后一次成功构建的 URL的文物。这些 URL 保持不变,并且始终指向最近成功的构建,因此您不必担心它们会发生变化,除非项目名称或服务器名称发生变化。
注意:这里存在安全漏洞,如果您是为了测试部署以外的其他目的而驾驶卡车通过这些漏洞。在第一种机制的情况下,您的构建服务器有一个ssh
密钥,可以使其访问(可能具有破坏性)目标。对于第二种机制,您相信 Jenkins 服务器只会提供对您有利的二进制文件。然而,对于测试环境、推送到阶段等,这些技术将会很好地发挥作用。