我目前正在考虑为一个小型开发团队共享的项目建立一个强大的CI和部署环境.目标是在测试方式,整体代码质量和部署方式方面实现一致性.
我读过关于Jenkins,Sonar,Maven,Capistrano,Phing,ANT,......说实话,我迷失在所有这些工具/技术的中间,并希望你验证我的理解并给予我对实现这一目标的最佳方法有所了解.
Jenkins:Jenkins由GIT钩子(在开发分支上)触发,并将执行PHING脚本执行以下操作:
Jenkins随后将所有报告/数据发送给Sonar unsing a sonnar-runner.
Sonar正在收集所有这些数据,将它们存储在一个数据库中,该数据库提供了一种分析应用程序代码随时间演变的方法.它还以比Jenkins更好的方式显示信息.
非常感谢您的时间和帮助!
php deployment build-automation continuous-integration jenkins
我们为我们的开发盒构建了一个流浪盒,我们面临着一些延迟问题.
问题:
关于包装盒:
为提高性能所做的事情:
config.vm.synced_folder"#{folder ['source']}","/ mnt/vagrant - #{i}",id:"#{i}",输入:'nfs',mount_options:['rw' ,'vers = 3','tcp','fsc','actimeo = 2']
我们可以清楚地看到,只要访问共享文件夹中的文件,"bindfs"进程就会占用大量的cpu.
首先是正常吗?当这些文件被访问时,我期待vagrant复制盒子上的文件.
我们可以看到盒子本身工作正常,因为当访问缓存数据(共享文件夹之外)时,事情进展得足够快,那么我该怎么做才能提高盒子性能并避免这些延迟问题呢?
编辑:已解决
我正在尝试构建一个作为服务运行的自定义验证器(主要用于获取实体管理器).
我按照文档和一些博客文章但无法使其工作.我没有得到任何错误消息,但从来没有调用我的约束方法isValid.
我的实体类(必须由"UniqueLem"验证(注意Doctrine验证器有效):
namespace Elyotech\VersionManagerBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Me\AdminBundle\Validator\UniqueLem;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass="Me\VersionManagerBundle\Repository\ProjectRepository")
* @ORM\Table(name="project")
* @UniqueLem
* @UniqueEntity("name")
*/
class Project{...
Run Code Online (Sandbox Code Playgroud)
我的Constraint类: 命名空间Elyotech\AdminBundle\Validator;
使用Symfony\Component\Validator\Constraint;
/*
* @Annotation
* */
class UniqueLem extends Constraint
{
public $message = 'This value is already used';
public $entity;
public $property;
public function validatedBy()
{
die; // Test to check if function is called
return 'validator.unique';
}
public function getTargets()
{
return …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个Vagrant盒子来运行我的网络服务器来托管我的Symfony2应用程序.除文件夹同步外,一切正常.
我尝试了两件事:
选项1:第一个选项有效,我实际上不知道文件是如何共享但它的工作原理.文件以两种方式复制,但应用程序速度超慢.Symfony正在生成可能存在问题的缓存文件,但我真的不知道如何解决这个问题,看看发生了什么.
选项2:同步只能以一种方式完成(从我的本地机器到流浪盒),这种情况涵盖大部分情况并且速度很快.问题是,当我在vagrant box上使用symfony命令行生成一些文件时,它们不会被复制到我的本地机器上.
我的问题是: 进行2种方式同步的最佳方法是什么?使用选项1,我如何(因为它可能是问题)从同步中排除一些文件.使用选项2,如何确保将远程更改复制到本地计算机?
谢谢!
我有以下脚本:
#!/bin/sh
#parameters definition
ROOT_PATH=/var/www/
msql_psw="cc"
mysql_login="bb"
mysql_db_name="aa"
echo START MYSQL DUMP
NOW=$(date +"%Y-%m-%d")
SQLFILE="log-$NOW.sql"
mysqldump --add-drop-table -u "$mysql_login" --password="$mysql_psw" "$mysql_db_name" > "$ROOT_PATH/$SQLFILE"
Run Code Online (Sandbox Code Playgroud)
当它与 一起运行时sh -x,它会给出空行的命令未找到错误,甚至非空行也无法正常工作:
sh -x export_db.sh
+ $'\r'
: command not found2:
+ ROOT_PATH=$'/var/www/\r'
+ msql_psw=$'cc\r'
+ mysql_login=$'bb\r'
+ mysql_db_name=$'aa\r'
+ $'\r'
: command not found8:
+ echo START MYSQL $'DUMP\r'
START MYSQL DUMP
+ $'\r'
: command not found10:
++ date +%Y-%m-%d
+ NOW=$'2014-10-02\r'
+ SQLFILE=$'log-2014-10-02\r.sql\r'
+ mysqldump --add-drop-table -u $'bb\r' --password= $'aa\r'
: …Run Code Online (Sandbox Code Playgroud) symfony ×3
php ×2
vagrant ×2
bash ×1
deployment ×1
jenkins ×1
performance ×1
shell ×1
validation ×1