持续集成(Continuous integration,简称CI)是一套标准的互联网软件开发和发布流程,主要指频繁的将代码集成到主干,让产品可以快速迭代,同时能保证高质量。 什么是Jenkins Je
持续集成(Continuous integration,简称CI)是一套标准的互联网软件开发和发布流程,主要指频繁的将代码集成到主干,让产品可以快速迭代,同时能保证高质量。
什么是Jenkins
Jenkins是一款由Java开发的开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。
利用Jenkins持续集成Node.js项目之后,就不用每次都登录到服务器,执行pm2 restart xxx或者更原始一点的kill xx,然后node xxx。通过Jenkins,只需单击『立即构建』按钮,就可以自动从Git仓库拉取代码,然后部署到远程服务器,执行一些安装依赖包和测试的命令,最后启动应用。如果需要部署到多台服务器上,只需在Jenkins上多配置相应的服务器数量,就可以通过Jenkins部署到多台服务器上。
通过Docker安装和启动Jenkins
Jenkins需要Java环境,有了Docker这个利器,我们就省去了安装Java环境的麻烦,只需执行如下命令即可。
1 | docker pull jenkins:latest |
有一个通常的做法是要将Jenkins文件存储地址挂载到主机上,万一Jenkins的服务器重装或迁移,可以很方便的把之前的项目配置保留。所用可通过如下命令来启动Jenkins容器。
1 | docker run -d --name myjenkins -p 49001:8080 -v ${pwd}/data:/var/jenkins_home jenkins |
上面安装和启动Jenkins容器的做法,常常会出现错误,错误日志如下。
1 2 | touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? |
这里推荐直接从 https://github.com/denverdino/docker-jenkins 获得相关代码,并构建自己的Jenkins镜像。执行命令如下:
1 2 3 | git clone https://github.com/AliyunContainerService/docker-jenkins cd docker-jenkins/jenkins docker build -t myjenkins . |
然后基于新镜像启动Jenkins容器。
1 2 | docker rm -f jenkins docker run -d -p 8080:8080 -p 50000:50000 -v $(pwd)/data:/var/jenkins_home --name jenkins myjenkins |
用docker-machine ip
获取到docker的IP后,用浏览器访问这个IP的8080端口,就会有如下图所示的Jenkins的主界面。