乐趣区

关于gitlab:如何使用GitlabJenkins实现多分支自动独立部署

开发免不了要测试,同一个我的项目一两个人开发的时候,开发、测试、部署一个分支就行,但当我的项目变大,开发人员变多时,如果还是这样操作,你可能就会常常遇到不同需要的代码同时测试时的互相烦扰问题。比方,1、合并代码时常常发生冲突;2、一人代码写错,影响所有人等。

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

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

上面以 PHP 我的项目为例来具体阐明。

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

  1. Linux:这是所有操作的根底,本文中次要用到的 Linux 版本为 Centos8
  2. Gitlab:负责管理源代码
  3. Jenkins:负责继续集成部署,
  4. Docker:负责搭建 Gitlab、Jenkins、Web 利用。
  5. Nginx:Web 应用服务器、反向代理
  6. PHP:解析 PHP 代码
  7. 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.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 的反对。

如果 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 的次要性能都是由一个个插件提供的。因而,在搭建环境之前咱们也须要先装置几个用到的插件。

咱们用到的插件次要有以下几个:

  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 链接

这个是 Gitlab 上创立的 access token

2、创立集成工作

这是 gitlab 我的项目的仓库地址。

3、在本地 Push 代码到 Gitlab,查看 Jenkins 工作执行状况

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

退出移动版