Jenkins

来源:互联网 发布:js定时跳转action 编辑:程序博客网 时间:2024/04/27 12:53

http://geek.csdn.net/news/detail/100596

基于openstack开发一款企业级的云管理平台

目前我们比较成熟的套路是git+gerrit+jenkins

Gitlab用于代码托管,gerrit主要是代码的评审,jenkins用于打包和单元测试

Gitlab是一个集代码管理,测试,部署于一体的开源应用程序。

它包括一个有非常好的权限控制的Git版本管理系统,代码评审系统,问题跟踪系统,活动反馈系统,wiki,持续集成CI系统等。



今天docker盛行,跑个docker实例给大家演示一下。用docker跑gitlab就一个命令


假设我们的服务器IP是47.88.21.77


sudo docker run --detach --hostname gitlab.example.com  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://47.88.21.77/';gitlab_rails['lfs_enable']=true;" --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /src/gitlab/config:etc/gitlab --volume /src/gitlab/logs:var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest


服务启动后,浏览器进入http://47.88.21.77/.首次进入可以设置root的密码,注册用户即可进入系统,这里我们演示时使用的用户名是cjzhao


使用GitLab评审代码

在这里可以创建组织,项目,基本概念和Github一样,我们直接创建我们要演示的项目ios_ci_demo


创建完成后,进入项目首页,可以看到黄色的提示信息,为了能从远程把代码推送到服务器,需要配置一个ssh公钥,点击add an ssh key把你自己的公钥添加完成,就可以把代码上传上去了



我们根据第三种方法把现有的代码上传到gitlab,即执行下面的代码

Cd existing_folder

Git init

git remoteadd origin git@47.88.21.77:cjzhao/ios_ci_demo.git

gitadd .

Git commit

gitpush -u origin master

Gitlab中完成持续集成CI包括两个操作

1,配置一个Runner(用来编译,测试,打包的服务器节点)

2,在项目根目录增加yaml格式的CI脚本文件.gitlab-ci.yml

我们首先来为我们的项目配置一个Runner,由于我们的项目是iOS的,因此需要在安装了MacOS操作系统和Xcode的环境下才能编译、打包我们的APP,因此我们需要将一台Mac计算机配置成我们的一个Runner,基本原理就是在Mac上安装一个代理程序gitlab-ci-multi-runner,然后将Mac注册到GitLab服务器端,然后这台Mac机器就能接收到GitLab服务器下发的CI任务,完成相应的编译、测试、打包等工作,然后将结果反馈给GitLab服务器。

在一台Mac机器上执行如下命令安装gitlab-ci-multi-runner(可能需要翻墙才能装):

sudo curl--output /usr/local/bin/gitlab-ci-multi-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-darwin-amd64sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner


在Mac机器上执行如下命令,将这台Mac注册到gitlab并绑定到我们示例项目

gitlab-ci-multi-runner register

我们的Mac机器就注册成为一个runner了,查看项目的runner页面


接下来就可以编写CI的脚本文件.gitlab-ci.yml

Stages:  

- build  

- archive

Build_project:  

stage: build script:  

- xctool -project ioscidemo.xcodeproj -scheme ioscidemo clean  

- xctool -project ioscidemo.xcodeproj -scheme ioscidemo test -test-sdk iphonesimulator9.3

Archive_project:  

stage: archive script:  

- xctool -project ioscidemo.xcodeproj -scheme ioscidemo archive -archivePath build/ioscidemo  

- xcodebuild -exportArchive -exportFormat ipa -archivePath "build/ioscidemo.xcarchive" -exportPath "build/ioscidemo.ipa"  

Only:  

- master  

Artifacts:  

Paths:

- build/ioscidemo.ipa


0 0
原创粉丝点击