之前一直想尝试在github上推送代码,jenkins就能自动构建项目。
最近尝试了下,大概步骤总结下,我是在mac电脑上部署的jenkins服务,打开jenkins官网按照它的安装步骤下载jenkins
Sample commands:
- 安装最新的jenkins版本:
brew install jenkins
- 依据jenkins版本号安装jenkins:
brew install jenkins@YOUR_VERSION
- 启动jenkins服务:
brew services start jenkins
- 重启jenkins服务:
brew services restart jenkins
- 更新jenkins版本:
brew upgrade jenkins
安装完jenkins之后可以启动下试试,一路注册,登录就能看到jenkins的主界面了,下面的内容我就不赘述了,感兴趣的伙伴可以看看这个网站讲的很详细我就不照搬了,放下链接:运维派
这里说下怎么实现上传代码到对应的分支就会触发自动打包的原理:
我jenkins配置的打包分支是dev分支,如果想配置其他的配置请前往jenkins配置:
首先配置github的webhook的钩子,这个钩子其实是一个服务,我这里简单的用nodejs搭了一套环境,仅供参考:
const http = require('http');
const createHandler = require('github-webhook-handler');
const handler = createHandler({path: '/webhook',secret: 'af16b4d29e93c6cccd0e6ffbdebc0d0d'});
const childProcess = require('child_process');
handler.on('push',event => {
console.log('sender: ',event.payload.sender.login,new Date().getMilliseconds());
// 这个token 是根据命令openssl rand -hex 12生成的
childProcess.exec('curl http://127.0.0.1:8080/job/gameTest/build?token=62db41be2aad7ef262b5a406');
});
http.createServer((req,res) => {
handler(req,res,(err) => {
console.log('req is ',req);
res.statusCode = 404;
res.end('api 404');
});
}).listen(3000,() => {
console.log('running in http://127.0.0.1:3000/');
});
这里 createHandler 的path和secret要与github上配置的保持一致,因为github访问不了我们内网的127.0.0.1,我这里用ngrok内网穿透软件,这样就能在github配置外网的地址穿透到内网了
这样我再github应该配置的是
这样只要我push代码到dev分支就会触发构建: