持续集成之自动发布-gitlab-runner

持续集成

概念

持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

 

 

Gitlab CI/CD运行原理

开发者推送、提交代码到Gitlab,Gitlab通过项目的.gitlab-ci.yml, 文件配置,找到指定的项目gitlab runner,runner运行相关的命令,进行编译、 集成、测试、交付、部署,一切顺利地话会分发到各个服务器(测试服务器、预发布服务器、正式服务器等),此时一个迭代开发上线流程走完。

 

GitLab Runner

GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。你可以想象一下:Runner就像一个个的工人,而GitLab-CI就是这些工人的一个管理中心,所有工人都要在GitLab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,GitLab-CI就会通知相应的工人执行软件集成脚本。

 

Runner类型

GitLab-Runner可以分类两种类型:Shared Runner(共享型)和Specific Runner(指定型)。

Shared Runner:这种Runner(工人)是所有工程都能够用的。只有系统管理员能够创建Shared Runner。

Specific Runner:这种Runner(工人)只能为指定的工程服务。拥有该工程访问权限的人都能够为该工程创建Shared Runner。

 

Gitlab-ci安装步骤

1:在指定服务器安装gitlab-runner 并注册gitlab-runner,其中注册信息包括url token,可以在公司gitlab网站里面setting-ci/cd-runner- Specific Runner里面找到

2:在项目里面添加.gitlab-ci.yml文件,并编写配置文件

 

 

配置一个Runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

 

安装:

sudo yum install gitlab-runner

 

 

注册runner

sudo gitlab-runner register

会提示输入信息:

       url 从gitlab网站里拿到

       token 从gitlab网站里拿到

       描述:

       Tags 标签(后面会用到)

       选择runner的执行者:shell

 

 

配置.gitlab-ci.yml

 

stages:

  - build

 

job1:

  stage: build

  script:

    - bash gitlab-ci-build.sh

  tags:

    - teacher-h5

  only:

    - master

 

 

配置遇到的问题:

1:代码提交后 CI/CD—Pipelines 一直pending

       因为.gitlab-ci.yml里面没有配置tags,

 

2:提示构建失败

       一般是两个原因:

       1:ssh连接失败

       原因:以普通用户登录后生成ssh key,并将ssh key保存在/root/.ssh目录下,这里生成的ssh key是root用户的,并不是当前用户的,如果我们将/root/.ssh里面的公钥配置在gitlab后,尝试连接有可能会报错,因为当前用户在连接gitlab的时候会用/home/你的用户名/.ssh里面的公钥去连接,这个时候就会出现连接问题,所以我们需要将/home/你的用户名/.ssh里面的公钥配置在gitlab

 

       2:gitlab-runner程序权限不够,以至于无法执行必要的脚本

              可以在/etc/ passwd里面配置gitlab-runer的权限

                  或者在脚本里面使用sudo –i

 

3:gitlab-runner安装完成后 需要到/etc/passwd里面设置他的权限把用户权限设置为0,组权限设置为和admin一样

 

4:使用gitlab-runer角色去git代码的时候总是提示密钥不对,这个时候可以使用 ssh git@ gitlab.zmaxis.com方式手动连接 看看是否可以连接上

 

5:Linux系统中默认生成的位置是/root/.ssh目录,如果我们是以普通用户登录的我们最好将位置切换成/home/你的用户名/.ssh目录里,就是你生成sshkey的时候不是要选择位置吗,那个时候选择你的home下的位置

 

你可能感兴趣的:(持续集成之自动发布-gitlab-runner)