gitlab+gitlab-runner 实现CI/CD

一、前言

        前面我用docker 部署了gitlab 和 gitlab-runner。然后这一篇,我们就要通过gitlab 和gitlab-runner 来实现CI/CD代码自动化部署流程。

        大致流程就是,往分支发布代码,yml文件里配置不同分支执行不通脚本。

二、编写yml 文件

        首先,我们在我们的项目代码里,写一个 .gitlab-ci.yml 文件。别的大家可以自己查一下,我这里写了比较简单的。内容如下:

stages:            # 定义pipeline的全部阶段(stage)
  - develop        # 阶段名,自己定义
  - main 

test_branch:           # 作业名称,自己定义        
  stage: develop   # 阶段名,对应stages里的阶段名
  only:            # 定义分支,并为该分支单独创建工作
    - develop
  script:          # 执行脚本,可以自己写,这里只是看一下效果
    - echo 'This is develop'

master_branch:
  stage: main
  only:
    - main
  script:
    - echo 'This branch is main'

三、打开gitlab 上 Runner 的设置

        Run untagged jobs 这行一定要勾上,因为runner和job匹配的规则是,runner的tag和项目的tag要相同,而我的项目里没有标注tag。所以,如果不把这个选项加上会导致,不触发runner。gitlab+gitlab-runner 实现CI/CD_第1张图片

gitlab+gitlab-runner 实现CI/CD_第2张图片

 四、测试

        分别测试,更新不同分支代码,是否会执行不同脚本。gitlab-runner在执行脚本时,用的是系统上 gitlab-runner 这个用户去执行的,所以要注意权限问题。(切记)

        我在gitlab上test项目中创建了两个分支,分别是develop(测试) 分支,main(主)分支。

      1. 更新测试分支代码

        在本地,往gitlab上推送更新的代码,然后上gitlab,在CI/CD 上我们可以看到pipeline有一次最近提交记录,分支为develop。点 Jobs可以看到 runner 脚本执行过程,从下面第三张截图上可以看到,它只执行了test_beanch工作让它执行的脚本。master_branch 这个作业的脚本没执行,因为这个作业指定的分支为mian,而mian分支没更新,所以没执行。

gitlab+gitlab-runner 实现CI/CD_第3张图片

gitlab+gitlab-runner 实现CI/CD_第4张图片

gitlab+gitlab-runner 实现CI/CD_第5张图片

         2. 更新main分支

        那怎么让它执行master_branch作业的脚本呢,我们只要把develop分支合并到main分支,main分支上的代码更新后,它就会执行了。

        我们更新了develop分支后,gitlab会问你,要不要创建合并请求。然后我们点创建合并请求。然后同意就好了,详细的就不说了,直接看结果。

        我们可以看到它输出的是:This branch is main 。

gitlab+gitlab-runner 实现CI/CD_第6张图片

 gitlab+gitlab-runner 实现CI/CD_第7张图片

你可能感兴趣的:(常用中间件,gitlab,ci/cd,git)