开拓免不了要测试,同一个项目一两个人开拓的时候,开拓、测试、支配一个分支就行,但当项目变大,开拓职员变多时,如果还是这样操作,你可能就会常常碰着不同需求的代码同时测试时的相互滋扰问题。比如,1、合并代码时常常发生冲突;2、一人代码写错,影响所有人等。
那么如何办理这个问题呢?
这里我先容一个多分支同时支配测试的方案。详细便是每一个开拓者的分支代码都可以独立支配到测试做事器(比如,不同的根目录,不同的容器),然后,各开拓者可以在各自的测试分支独立调试。

下面以PHP项目为例来详细解释。
首先列一下我们可能用到的工具清单:
Linux:这是统统操作的根本,本文中紧张用到的Linux版本为Centos8Gitlab:卖力管理源代码Jenkins:卖力持续集成支配,Docker:卖力搭建Gitlab、Jenkins、Web运用。Nginx:Web运用做事器、反向代理PHP:解析PHP代码GIT:管理源代码须要解释的是,我们安装这些工具紧张利用yum命令,因此在实行后面步骤前,请先确保你的Linux系统已经安装了yum命令。
详细步骤如下:
1、安装Docker
yum install docker
2、安装Gitlab下载Gitlab镜像:
docker pull gitlab-ce
创建Gitlab容器了:
docker run --name gitlab -p 443:443 -p 80:80 -p 22:22 -v /data/www/gitlab/config:/etc/gitlab -v /data/www/gitlab/logs:/var/log/gitlab -v /data/www/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce /bin/bash
访问localhost,查看效果:
3、安装Jenkins
制作Jenkins镜像
我们的仓库代码是不包含vendor目录的,须要git checkout 后,利用composer install命令自动天生。由于官方Jenkins镜像不包含Composer、PHP、Git等我们的PHP项目须要用到的命令,因此,在实际利用时,我们以官方镜像为根本制作了自己的Jenkins镜像。
下载Centos镜像,如下:
docker pull centos:latest
以Centos镜像为根本镜像,创建Jenkins容器:
docker run -idt --name jenkins docker.io/centos /bin/bash
进入jenkins容器内部:
docker exec -it jenkins /bin/bash
利用yum命令安装java、php、composer、git:
yum -y php git java
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"php composer-setup.phpphp -r "unlink('composer-setup.php');"mv composer.phar /usr/bin/composer
如果提示PHP拓展缺失落,请利用yum命令安装干系拓展。
利用yum命令,安装官方jenkins:
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.reporpm --import https://pkg.jenkins.io/redhat/jenkins.io.keyyum install jenkins
修正Jenkins配置,配置文件默认位置为:/etc/sysconfig/jenkins
JENKINS_HOMEJENKINS_USERJENKINS_PORTJENKINS_HOME是Jenkins的主目录,Jenkins事情的目录都放在这里,Jenkins储存文件的地址,Jenkins的插件,天生的文件都在这个目录下。
JENKINS_USER是Jenkins的用户,拥有$JENKINS_HOME和/var/log/jenkins的权限,一样平常利用root用户。
JENKINS_PORT是Jenkins的端口,默认端口是8080。
启动Jenkins:
service jenkins start
如果涌现缺点,可能要考虑文件/etc/init.d/jenkins是否短缺配置,Jenkins的启动须要Java的支持。
如果Jenkins安装没有问题,下面我们就须要设置开机自启了。这是为了我们后面创建Jenkins容器的时候,Jenkins可以自动启动,而不须要我们进入容器中手动启动。jenkins.sh重启脚本如下:
给jenkins.sh设置可实行权限:
chmod +x /usr/local/jenkins/jenkins.sh
将文件添加系统自动启动程序列表:
echo "/usr/local/jenkins/jenkins.sh">> /etc/rc.d/rc.local
利用exit命令退出容器,然后利用docker commit命令制作新的Jenkins镜像:
docker commit -m 'Jenkins with docker/composer/git/php' jenkins jenkins:latest
以新镜像创建Jenkins容器,如下:
docker run -idt --name jenkins -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/www/jenkins/jenkins_home:/var/lib/jenkins:rw jenkins /bin/bash
至此,Jenkins就安装好了。
4、在Gitlab创建项目1、设置access token,记录天生的秘钥,后面创建Jenkins任务须要利用。
2、创建代码仓库
3、为代码仓库,设置Webhook
5、在Jenkins创建任务
在Jenkins中,Jenkins的紧张功能都是由一个个插件供应的。因此,在搭建环境之前我们也须要先安装几个用到的插件。
我们用到的插件紧张有以下几个:
GitLab PluginGitlab Hook PluginGitlab API Pluginruby-runtime从名字我们也可以看到,这紧张是用于Jenkins与Gitlab的交互。
解释一下,Jenkins与Gitlab的交互包括两部分,一部分是Gitlab通过Webhook提交Git Push事宜,触发Jenkins开始实行集成任务,另一部分是Jenkins通过Git从Gitlab拉取源代码。
1、配置Gitlab链接
这个是Gitlab上创建的access token
2、创建集成任务
这是gitlab项目的仓库地址。
3、在本地Push代码到Gitlab,查看Jenkins任务实行情形至此,多分支同时支配测试的环境就搭建好了。