本文介绍 使用 jenkins部署机来部署项目到 远程服务器 为什么我要把jenkins装在单独的一台服务器, 一是为了降低部署和生产环境的耦合性, 二是为了节约成本, 可以再本地服务器搭建部署机
我使用的是docker安装的方式, 安装步骤: jenkins.io/zh/doc/book…
此处假设你已经成功登录进入了jenkins, 可以看到下图界面
好, 现在我们进入镜像系统命令行中, 生成ssh密钥
$ docker ps 复制代码
2. 进入镜像命令行
docker exec -it 你的镜像ID /bin/bash 复制代码
可以看到, 进入了镜像的bash 3. 生成SSH密钥
这里说明一下为什么配置ssh, 这样可以更好的免密使用git 和 免密码登录远程服务器
$ cd /root/.ssh $ ssh-keygen -t rsa -C 你邮箱 $ cat id_rsa.pub 复制代码
最后一个命令后, 可以看到这串密钥
随后我们分别去github和需要远程连接的服务器的服务商(比如良心云, 套路云)那配置ssh, 这玩意我就不多说了.我是一条酸菜鱼
系统管理
Add
按钮, 添加凭据, 就是账号密码, 搞好后点击连接测试, 成功即可
Advance
选中即可生成hook
构建触发器选择hook触发
构建方式选择shell
填入shell保存即可
#!/bin/sh ssh -tt 远程服务器用户名@远程服务器ip << remotessh cd /home/tlgc_server_api /bin/git pull npm run stop npm run start exit remotessh 复制代码
Pseudo-terminal will not be allocated because stdin is not a terminal.
所以给 ssh
加上 -tt
参数, 为了可以在远程机器上执行命令, 需要 << remotessh
, 这里注意, 最后两句, 用来退出远程机器, 不然的话, 会导致任务无法终治. git
的完整路径, 之前写 cron
的时候也遇到过, 执行 bash
, 需要使用 /bin/bash
, 这里执行 git
命令, 也需要完整路径 /bin/git
, 昨晚我就用 git
, 然后也没加最后两句终治, 任务就一直卡在那,卡一晚上... 感觉还行, 虽然没用到jenkins其他好功能, 但是适合自己的就是最好的 目前体验过的自动化部署有
以前觉得daocloud方便, 现在目前开发用的是jenkins, 看个人口味了