系统环境
要有:JDK、gitlab、tomcat、Jenkins。如果有私有库还要有maven、naxus等。
由于我这边只有一台物理服务器。所以gitlab和jenkins都安装在一台上。
Jenkins安装这里就不说了,直接安装tomcat服务,去网上下载个Jenkins.war包放入webapps下启动tomcat就行。gitlab安装可以去百度或者Google。
下面直接开始配置:
1、配置gitlab
去gitlab上创建一个代码仓库,或者直接拉取开发的分支。(有注册git产品的账号好像都能用。我注册过GitHub账号所以也能登陆)。由于我这里是测试直接新建一个项目,然后创建个分支并创建一个文件。
点击新建文件创建文件,填入说明文件。提交
设置ssh**:
去服务器上用**命令生成:ssh-******(具体自己操作)
复制~/.ssh/id_rsa.pub 里的公钥信息
完后如下图所示:
这里要先测试下仓库是否能上传代码到gitlab。(过程中会要求填写用户名、密码,邮箱)
git clone ssh://[email protected]:root/test.git
cd test/ echo 11111 > 1.txt
git add .
git commit -m "add 1.txt"
git push
注意:这里有个问题,现在大部分的ssh端口都会将 默认的改掉,所以这里要处理下gitlab的默认端口。
要在gitlab配置中修改成对应的ssh端口号.
编辑配置文件
1 2 |
vim /etc/gitlab/gitlab.rb gitlab_rails['gitlab_shell_ssh_port'] = 7023 |
此处7023是我的ssh端口(虚构机的,按照实际端口来改)
使其生效,重新配置下(重置不会丢失gitlab项目)
1 |
gitlab-ctl reconfigure |
此时登录gitlab发现,原来的ssh://[email protected]:/root/test.git变成了ssh://[email protected]:7023/root/test.git
到此gitlab配置完。
2、现在开始配置Jenkins
web上打开Jenkins页面
添加插件:系统管理 => 插件管理(绿色) 。需要添加的插件有:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab。在可选插件查询要添加的。
添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。
添加主机:系统管理 =>系统设置 找到Publish over SSH(最下方)
添加完主机之后,新建一个项目,开始配置构建操作
点开源码管理,填写选择git仓库地址。注意加上ssh:// 认证用户开始不是git,选择有的用户。
添加完私钥,下图的用户认证会变成git。成功不会有任何提示,有提示就是失败。
直接点构建,来设置构建。
配置gitlab,配置当有代码提交时,触发jenkins的部署操作的钩子。选择集成(Integrations)
3、测试提交代码是否会部署到远程主机
再次克隆仓库
git clone ssh://[email protected]:root/test.git
cd test/
echo '测试Jenkins' > index.html
git add .
git commit -m 'add index.html'
git push
4、添加插件使包能自动上传OSS
由于应用系统全部部署在阿里云中,那么可以考虑使用阿里云OSS来建立artifacts仓库。使用阿里云OSS来建立artifacts仓库有两个好处:一是仓库的可靠性、高可用性由阿里云OSS来保证;二是上传、下载Artifact速度快。
安装说明 参考:https://gitee.com/chixq/aliyun-oss-plugin
在Jenkins中安装插件, 请到 插件管理=>高级 上传 |Upload,上传插件(.hpi文件) 安装完毕后请重新启动Jenkins
配置说明
在使用插件之前,必须先在[Manage Jenkins | Configure System | 阿里云OSS账户设置]中配置阿里云帐号的Access Key、Secret Key和阿里云EndPoint后缀.
阿里云后缀:内网填"-internal.aliyuncs.com",外网填".aliyuncs.com",默认外网。如果您的Jenkins也部署在阿里云上面,那么可以使用内网,上传速度更快。
Post-build actions: 上传Artifact到阿里云OSS
在Jenkins Job的Post-build actions,用户可以设上传Artifact到阿里云OSS。需要填写的信息是:
- Bucket名称: artifact要存放的bucket
- 要上传的artifacts: 文件之间用;隔开。支持通配符描述,比如 text/*.zip
- Object前缀设置:可以设置object key的前缀,支持Jenkins环境变量比如: "JOBNAME/{BUILD_ID}/${BUILD_NUMBER}/"
假设一个job的名称是test,用户的设置如下
- bucketName: f2c
- 要上传的artifacts: hello.txt;hello1.txt
- Object前缀: JOBNAME/{BUILD_ID}/${BUILD_NUMBER}
那么上传后的文件url为: http://f2c.oss-cn-hangzhou.aliyuncs.com/test/2015-01-20_14-22-46/5/hello.txt