php如何生成一年的日历表_如何使用Gitlab+Jenkins实现多分支自动独立部署?

来源:https://www.toutiao.com/i6882749390067499533

开发免不了要测试,同一个项目一两个人开发的时候,开发、测试、部署一个分支就行,但当项目变大,开发人员变多时,如果还是这样操作,你可能就会经常遇到不同需求的代码同时测试时的相互干扰问题。比如:

  • 1、合并代码时经常发生冲突;
  • 2、一人代码写错,影响所有人等。

那么如何解决这个问题呢?

这里我介绍一个多分支同时部署测试的方案。具体就是每一个开发者的分支代码都可以独立部署到测试服务器(比如,不同的根目录,不同的容器),然后,各开发者可以在各自的测试分支独立调试。

下面以PHP项目为例来具体说明。

首先列一下我们可能用到的工具清单:

  1. Linux:这是一切操作的基础,本文中主要用到的Linux版本为Centos8
  1. Gitlab:负责管理源代码
  1. Jenkins:负责持续集成部署,
  1. Docker:负责搭建Gitlab、Jenkins、Web应用。
  1. Nginx:Web应用服务器、反向代理
  1. PHP:解析PHP代码
  1. 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,查看效果:

ddd42ac37b3305f9b4f05e7f6a9d426d.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

3、安装Jenkins

制作Jenkins镜像

我们的仓库代码是不包含vendor目录的,需要git checkout 后,使用composer install命令自动生成。由于官方Jenkins镜像不包含Composer、PHP、Git等我们的PHP项目需要用到的命令,因此,在实际使用时,我们以官方镜像为基础制作了自己的Jenkins镜像。

下载Centos镜像,如下:

docker pull centos:latest
d91a966c84f431ee639c2b4eb64c7921.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

以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.php
php -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.repo
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum install jenkins

修改Jenkins配置,配置文件默认位置为:/etc/sysconfig/jenkins

  • JENKINS_HOME
  • JENKINS_USER
  • JENKINS_PORT

JENKINS_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的支持。

84b055a764b22e934e8e30100365018c.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

如果Jenkins安装没有问题,下面我们就需要设置开机自启了。这是为了我们后面创建Jenkins容器的时候,Jenkins可以自动启动,而不需要我们进入容器中手动启动。jenkins.sh重启脚本如下:

6f236dc86d8e9a97a684aa17bafc1930.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

给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任务需要使用。

251265718cca44eeaafa9333c99ba174.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

2、创建代码仓库

f6f74f165587a83acb8278b096da8217.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

3、为代码仓库,设置Webhook

2f8996a652a948530917f8affe4c817b.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

5、在Jenkins创建任务

在Jenkins中,Jenkins的主要功能都是由一个个插件提供的。因此,在搭建环境之前我们也需要先安装几个用到的插件。

7d176a00a738a4969cc82eaadb5db7c8.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?
124623d21afa0cbea3ccc2d3c4e7ffb4.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?
e4c3eb82a808c50b541a18b69f880dbb.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

我们用到的插件主要有以下几个:

  1. GitLab Plugin
  2. Gitlab Hook Plugin
  3. Gitlab API Plugin
  4. ruby-runtime

从名字我们也可以看到,这主要是用于Jenkins与Gitlab的交互。

说明一下,Jenkins与Gitlab的交互包括两部分,一部分是Gitlab通过Webhook提交Git Push事件,触发Jenkins开始执行集成任务,另一部分是Jenkins通过Git从Gitlab拉取源代码。

1、配置Gitlab链接

0da947b43b435d72c89f2727bffa663f.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?
75bead0a257cd0e8c7fc67060d2def79.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

这个是Gitlab上创建的access token

2、创建集成任务

a3d013bab7ad40e4a0d242bf35e7752f.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?
4bcfdc8407780ca632d36b953bd1345b.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?
cf6f7b4327237be59af6540c189d16b4.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

这是gitlab项目的仓库地址。

b2eaaeb61ff9684a163cacfd8f727c14.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?
05d0c0cb600914137a833ad50ab0d634.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?
af978823974da822f0551fd9b5c78903.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

3、在本地Push代码到Gitlab,查看Jenkins任务执行情况

32451f18b036ec0f9978606d97829030.png
如何使用Gitlab+Jenkins实现多分支自动独立部署?

至此,多分支同时部署测试的环境就搭建好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值