利用 gitlab 实现多服务器的持续集成和部署

Gitlab使用持续集成-fengzifz

之前写过一篇关于利用 gitlab 实现持续集成和部署的文章,见:在 gitlab.com 上配置持续集成和持续部署

然而,当我们的业务的测试环境和生产环境是分离的,并且生产环境也可以支持 CI/CD 时,我们也可以配置让其实现自动化,而不用每次手动去更新。

1. 在 gitlab.com 配置多个 gitlab-runner

实质上,就是配置多个 gitlab-runner,登录 gitlab.com 或者是你自己的自建 gitlab 服务器,然后打开项目的 settings > CI/CD > Runners,由于 gitlab 支持配置多个 gitlab-runner,所以我们只需要复制 registration token,到对应的服务器注册 gitlab-runner,然后指定不同的 tag 就可以了。

gitlab持续集成

2. 在 .gitlab-ci.yml 添加对应的 CI/CD 策略

以一个常规的 laravel 项目为例,假设配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
stages:
– test
– deploy

# Variables
variables:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_DATABASE: homestead
DB_HOST: mysql

# Speed up builds
cache:
key: $CI_BUILD_REF_NAME # changed to $CI_COMMIT_REF_NAME in Gitlab 9.x
paths:
– vendor
– node_modules
– public
– .yarn

test:
stage: test
services:
– mysql:5.7
image: edbizarro/gitlab-ci-pipeline-php:7.2-alpine
script:
– sudo yarn config set cache-folder .yarn
– yarn install –pure-lockfile
– cp .env.example .env
– composer install –prefer-dist –no-ansi –no-interaction –no-progress
– php artisan key:generate
– php artisan migrate:refresh –seed
– php artisan storage:link
– php artisan route:cache
– php artisan config:cache
artifacts:
paths:
– ./storage/logs # for debugging
expire_in: 1 days
when: always
only:
– develop
– master_client
– master

deploy_production:
stage: deploy
environment:
name: production
url: http://testing.fengzifz.com
only:
– master
tags:
– testing_site

然后我们再这个配置文件最后添加如下内容:

1
2
3
4
5
6
7
8
9
deploy_client:
stage: deploy
environment:
name: client_production
url: http://www.client_site.com
only:
– master_client #这个是分支名称
tags:
– client_live_tag #这个tag要对应第 1 个步骤创建的 runner 对应的 tag

然后当我们把更新的代码合并到 master_client 分支时,就会触发新添加的 runner,去执行持续集成和部署。

完。

You May Also Like

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注