Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS

系统环境

要有:JDK、gitlab、tomcat、Jenkins。如果有私有库还要有maven、naxus等。

由于我这边只有一台物理服务器。所以gitlab和jenkins都安装在一台上。

Jenkins安装这里就不说了,直接安装tomcat服务,去网上下载个Jenkins.war包放入webapps下启动tomcat就行。gitlab安装可以去百度或者Google。

下面直接开始配置:

1、配置gitlab

去gitlab上创建一个代码仓库,或者直接拉取开发的分支。(有注册git产品的账号好像都能用。我注册过GitHub账号所以也能登陆)。由于我这里是测试直接新建一个项目,然后创建个分支并创建一个文件。

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第1张图片

 

 点击新建文件创建文件,填入说明文件。提交

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第2张图片

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第3张图片

设置ssh密钥:

去服务器上用密钥命令生成:ssh-keygen(具体自己操作)

  复制~/.ssh/id_rsa.pub  里的公钥信息 

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第4张图片

 完后如下图所示:

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第5张图片

 这里要先测试下仓库是否能上传代码到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+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第6张图片

到此gitlab配置完。

2、现在开始配置Jenkins

web上打开Jenkins页面

添加插件:系统管理 => 插件管理(绿色) 。需要添加的插件有:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab。在可选插件查询要添加的。

添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。

 添加主机:系统管理 =>系统设置 找到Publish over SSH(最下方)

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第7张图片

添加完主机之后,新建一个项目,开始配置构建操作

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第8张图片

 

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第9张图片

 点开源码管理,填写选择git仓库地址。注意加上ssh:// 认证用户开始不是git,选择有的用户。

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第10张图片

 

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第11张图片

添加完私钥,下图的用户认证会变成git。成功不会有任何提示,有提示就是失败。 

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第12张图片

 

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第13张图片

直接点构建,来设置构建。

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第14张图片

配置gitlab,配置当有代码提交时,触发jenkins的部署操作的钩子。选择集成(Integrations)

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第15张图片

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第16张图片

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第17张图片

 

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第18张图片

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

 

 

 

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第19张图片

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第20张图片

4、添加插件使包能自动上传OSS

 

由于应用系统全部部署在阿里云中,那么可以考虑使用阿里云OSS来建立artifacts仓库。使用阿里云OSS来建立artifacts仓库有两个好处:一是仓库的可靠性、高可用性由阿里云OSS来保证;二是上传、下载Artifact速度快。

安装说明 参考:https://gitee.com/chixq/aliyun-oss-plugin

下载插件:wget http://repository-proxy.fit2cloud.com:8080/content/repositories/releases/org/jenkins-ci/plugins/aliyun-oss/0.6/aliyun-oss-0.6.hpi 

在Jenkins中安装插件, 请到 插件管理=>高级 上传 |Upload,上传插件(.hpi文件) 安装完毕后请重新启动Jenkins

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第21张图片

配置说明

在使用插件之前,必须先在[Manage Jenkins | Configure System | 阿里云OSS账户设置]中配置阿里云帐号的Access Key、Secret Key和阿里云EndPoint后缀.

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第22张图片

阿里云后缀:内网填"-internal.aliyuncs.com",外网填".aliyuncs.com",默认外网。如果您的Jenkins也部署在阿里云上面,那么可以使用内网,上传速度更快。

Post-build actions: 上传Artifact到阿里云OSS

在Jenkins Job的Post-build actions,用户可以设上传Artifact到阿里云OSS。需要填写的信息是:

Gitlab+Jenkins实现自动部署以及将构建后的包自动上传到阿里云OSS_第23张图片 

  1. Bucket名称: artifact要存放的bucket
  2. 要上传的artifacts: 文件之间用;隔开。支持通配符描述,比如 text/*.zip
  3. Object前缀设置:可以设置object key的前缀,支持Jenkins环境变量比如: "JOBNAME/{BUILD_ID}/${BUILD_NUMBER}/"

假设一个job的名称是test,用户的设置如下

  1. bucketName: f2c
  2. 要上传的artifacts: hello.txt;hello1.txt
  3. Object前缀: JOBNAME/{BUILD_ID}/${BUILD_NUMBER}

那么上传后的文件url为: http://f2c.oss-cn-hangzhou.aliyuncs.com/test/2015-01-20_14-22-46/5/hello.txt

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(个人日志)