使用 jenkins 对 bitbucket 上的私人项目作持续集成

我有几个放置在 Bitbucket 上的私人项目, 以及一台放置在香港的 Linode vps, 想在这台 linode 上部署一个 jenkins 服务, 实现对 bitbucket 上的这些项目作持续集成. 下面来说流程, 基于目前最新的1.502版本.

至于怎么安装 jenkins 以及怎么配置 resin/nginx 等服务, 不在本文的讨论范围, 这里关注的重点在于配置 bitbucket 项目.

配置 Jenkins

首先, 解决安全问题, 既然 bitbucket 上的项目是私人的, jenkins 自然也不能开放公共权限. 我们要设置 jenkins.

通过左上角进入系统配置菜单: Jenkins > Manage Jenkins > Configure Global Security, 勾选 Enable security, 下面Security Realm支持了四种安全策略, 我们选择最简单的 Jenkins’s own user database, 但不要勾选下面的 Allow users to sign up.

在下面的 Authorization 中选择 Project-based Matrix Authorization Strategy, 以获得最灵活的权限控制功能. 配置完成后, 把jenkins重启, 这个时候会提示要求输入用户名和密码, 由于是第一次登录, 直接点击左上角 jenkins, 这里提示了注册功能, 注册唯一的管理员用户. 注册完成后就能登录了, 之后可以再次进入刚刚的 Configure Global Security 配置用户权限.

导入 Bitbucket 项目

配置好了 jenkins, 我们下面来创建指向 bitbucket 的项目. Jenkins 中点击 New Job, 设置 Job name 并选择 Build a free-style software project. 下面进入了项目的配置页面, 最主要的几个地方是:

  • Source Code Management

这里当然选择 Git. 但是要注意一点, jenkins 不支持 HTTPS 方式, 所以我们必须在 bitbucket 中找到项目的 SSH 地址, 而且同时我们也要在jenkins的服务器上生成 ssh key. 这里简单介绍步骤:

登录 linode 服务器, 执行下面的命令生成 ssh key:

1
$ ssh-keygen -t rsa

默认生成的key会保存在 _~/.ssh/id_rsa.pub_, 我们把内容 cat 出来并复制.

1
$ cat ~/.ssh/id_rsa.pub

进入 bitbucket 的项目配置页面, 在 Deployment keys 点击 Add key, Label 随便写, Key 中粘贴前面复制出来的 id_rsa.pub 的内容.

保存后进入 bitbucket 的项目主页, 查看项目的 SSH 地址, 点击 HTTPS 下拉选择 SSH, 地址格式为 git@bitbucket.org:<user_name>/<project_name>.git, 把这个地址填到 jenkins 中项目配置页的 Git Repositories 里. Branches to build 可以填 master, 不填则默认是最后 push 的 branch.

下面来配置顶起 build 的周期, 我选择的做法是勾选 Build TriggersPoll SCM , 填入 * * * * *, 这样让 jenkins 每分钟检查一次 bitbucket, 如果有新的修改, 则自动 build.

到此, 就完成了所有关于 jenkins 的配置, 点击左边的 Build Now试试看吧.