我有一个PHP项目,在该项目中,我可以通过作曲家加载软件包。我还在专用的CI服务器上使用Jenkins运行持续的集成。每小时一次,Jenkins查询我的存储库是否进行更改,如果存在,则如果执行测试运行。
TestRun的第一步是对存储库进行新的结帐,并使用PHING执行应用程序的构建。构建的步骤之一是执行
composer install
由于Jenkins总是可以与新的结帐工作,因此作曲家将始终在每个测试运行中获取所有软件包,即使自上次运行以来没有任何软件包。这有几个缺点:
- 完成测试运行需要相对的时间(作曲家需要获取Zend Framework,这很大
- 如果每小时获取新软件包,它会使不必要的压力
- 如果出于某种原因,作曲家安装失败,我的测试也会进行。
我正在考虑将作曲家获取的包装存储在CI服务器的中心位置,因此Jenkins可以在每个测试运行中访问该位置的软件包。当然,现在我必须重写一部分应用程序,以处理供应商文件夹在CI服务器上位于不同位置的事实。其次,我必须告诉詹金斯(Jenkins)跟踪composer.lock文件上的更改,以查看他是否需要运行作曲家。恐怕这两件事真的很琐碎。
任何人都有任何其他/更好的方法的建议,还是在每次测试运行中通过作曲家获取所有软件包的最佳选择。在公务上,这是确保您始终使用正确包装的最佳方法,但是当肯定会在开发的后期阶段,当然,当包装列表几乎不会更改时,它感觉就像是浪费了bandwith。
加快速度的一种方法是使用 composer install --prefer-dist
,即使为开发软件包也只能下载zips。这对于独特的构建而言是首选,因为它跳过了项目的整个历史。
至于保留帕克斯特人,不必担心它,与在每一个提交中建立在特拉维斯上的所有开源库相比,每个小时都不会产生巨大的差异。
<</p>您可以做的一件事是将供应商存储在Jenkins Project Workspace之外的位置,以使其保持在构建之间。您不一定需要更改申请。只需更新构建脚本,以便创建指向供应商位置的符号链接。
我使用capifony进行部署,它使用这种方法来保持发行版之间的供应商。
要注意的一件事是,作曲家caches软件包下载的软件包。因此,一旦第一次下载了它们,即使Packagist降低了(不是100%确定),并且保留了网络带宽(100%确定)。
。第二件事是:为什么要通过对存储库进行新的结帐进行测试?完全有可能将代码的副本保存在詹金斯的工作区中,只需确保您在每个测试中擦除运行的缓存,日志和其他工件即可。这不仅会加快作曲家的安装,而且还会加快git的拉动,尤其是对于大型存储库!
!旁注:对于我们自己的Jenkins平台,在测试之间未清洁工作区,我们使用作曲家发现的主要缺点是通过在每个工作区中放入完整的供应商DIR来获取的大量磁盘空间。我尝试通过使用符号链接和共享供应商(基于Composer.lock的哈希命名)来解决此问题,但是随后作曲家AutoLoader遇到了一些问题,找到了从...
在Jenkins上安装ZF2项目的步骤 mkdir/path/to/your/project1.安装作曲家
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
注意:如果以上因权限而失败,请再次使用sudo运行MV线。快速复制版本,包括sudo:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
在项目的根目录中创建一个composer.json文件添加您需要的所有PACAKAGE
{ "名称":" amarjitsingh", "描述":" amarjitsingh", "许可证":" BSD-3-C-sause", "关键字":[ "框架", " ZF2" ],, "主页":" http://domain.com/", "要求": { " php":"> = 5.5", " zendframework/zendframework":" 〜2.5", " phpoffice/phpword":" Dev-Master", "学说/学说 - 模块":" 0.7.0",, "想象/想象":" 0.5。*", " ZF-Commons/ZFC-User":" Dev-Master" },, "自动加载":{ " psr.0":"/模块" }
}
运行'
composer install
'安装这些软件包。在机器上设置git如果您使用的是Ubuntu,则可以使用FOFOWWORD命令
设置Gitsudo apt-get更新sudo apt-get安装git
设置git
git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com"
检查配置列表
git config --list
一旦您设置了git,c
cd /path/to/your/project
。包装后,安装了document中的创建' .gitignore
'文件 root
并在其中添加'vendor'
。
git init
git remote add origin https://username@bitbucket.org/username/zf2ci.git
将下面的命令应用于添加,提交和按下文件
git add .
git commit -m 'Initial commit with contributors'
git push -u origin master
git pull
使用云可以使用AWS。我正在使用数字海洋
1创建droplet
2.按照您的意愿命名,在mycase中是ZF2CI3.选择一个包4.选择操作系统我的cas eis ubuntu 14.045.在应用程序选项卡中选择灯6完成此操作后,您将获得IP地址,用户名root和密码。7.使用腻子登录IP8.用户root
9.密码pass
10.一旦进入它,它将提示您更改密码11. Goto Web根,例如/var/www/html
12.安装git13. apt-get install git
14.克隆仓库15. git clone https://username@bitbucket.org/username/zf2ci.git
16.在这台计算机上安装作曲家
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
注意:如果以上因权限而失败,请再次使用sudo运行MV线。快速复制版本,包括sudo:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
- goto app路径
/var/ww/html/zf2ci
- 运行'
composer install --no-dev
'我们正在安装它没有开发选项,因为我们只在应用程序服务器上安装经过良好测试的代码
step3
创建詹金斯服务器1.为詹金斯设置另一滴2.图像Ubuntu3.安装灯安装Jenkns
安装詹金斯在安装Jenkins之前,我们必须将密钥和源列表添加到APT。这是2个步骤完成的,首先我们要添加密钥。
1.1
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -
其次,我们将为Jenkins创建一个源列表。
1.2
echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list
1.3现在,我们只需要更新APT的缓存,然后才能安装Jenkins。
apt-get update
1.4随着缓存已更新,我们可以继续安装Jenkins。请注意,詹金斯(Jenkins)有很多依赖关系,因此可能需要一些时间安装它们。
apt-get install jenkins
1.5使用端口8080打开IP例如http://127.0.0.1:8080
1.6在jenkins服务器上安装git
sudo apt-get update
sudo apt-get install git
1.7安装作曲家
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
1.8启用用户身份验证
1.9 enable bitbucket plugin
用于Jenkins1.9.1 Manage Jenkins->Manage Plugins->Bitbucket Plugin->download
并安装1.9.2创建工作 创建工作 -> 项目名称(例如ZF2CI) -> 源代码管理(GIT)提供SSH URL(git@bitbucket.org:username/zf2ci.git
) -> 构建的分支(*/Master)这是每次用户提交并将代码合并与Master Branch -Jenkins一起被调用
1.9.3 构建触发器 选择选项(在推动一部分时构建),当我们在位桶上做邮递
时,这将冻结1.9.4 build->执行shell
composer install
./vendor/bin/phpunit ./tests
我们的测试是DIR
1.9.5设置ssh key pair
通过Putty登录到Jenkins Serevr
su jenkins
cd
ls -la( check what is in the jenkins home directory)
ssh-kegen -t rsa (dsa by default but choose rsa key ,it is faster)
press enter(on path)
press enter(leave the pass phrase empty , the whole point here is to avoid passwords in the automated jobs)
pres enter
cd .ssh
ls -la
(您将在那里找到id_rsa.pub
)文件
cat id_rsa.pub
(选择全部并复制文件的内容)
1.9.6 Goto bitbucket 切换到repo ZF2CI 前往设置 单击部署键 ->添加密钥 添加标签(Jenkins) 键*(粘贴id_rsa.pub的内容)文件 保存键
summary
`zf2ci->settings->deployment keys->add key->type` label and paste id_rsa.pub key->save
1.9.7 注册repo
的挂钩Settings->
Integrations->
Hooks->
POST(search for POST Hook)->
Add the url /IP of the Jenkins Server) (`172.62.235.100:8080/bitbucket-hook/`)
(the body of the post contanis information about the repository, branch, list of recent commits, user)
1.9.8 登录到Jenkins Server
su jenkinks
cd
cd .ssh
git ls-remote -h ssh://git@bitbucket.org:username/zf2ci.git HEAD
1.9.9 save
詹金斯项目1.9.10 在 执行shell->命令 [rsync -y -vrzhe "ssh -o StrictMostKeyChecking=no" --exclude vendor/ . root@ipaddress:/var/www/html/zf2ci
(App Server)]
ssh root@ipaddress<<EOF
cd /var/www/html/zf2ci
composer install --no-dev
EOF