关于gitlab:GitLab-Rainbond-打造Devops流程

39次阅读

共计 4377 个字符,预计需要花费 11 分钟才能阅读完成。

GitLab + Rainbond 打造 Devops 流程

流程

  • 预设我的项目有两个分支,dev 和 master
  • dev 分支对应 dev 环境
  • master 分支对应 test 环境和 prod 环境
  1. 开发在 dev 中编写代码,提交 git 时触发 dev 环境构建
  2. 开发在 dev 自测实现,将 dev 分支代码合并 master 分支并提交 git
  3. master 提交操作触发 test 环境构建,告诉测试人员进行测试,并附加构建地址(gitlab CICD)
  4. 测试不通过则开发持续开发,反复上述流程
  5. 测试通过则登录 gitlab CICD 手动点击,执行“部署”步骤

目录

  • 一、创立 rainbond 三个环境我的项目,并开启构建源的自定义 API
  • 二、为 gitlab 我的项目设置 runner
  • 三、编写 gitlab cicd 配置
  • 附 1 gitlab-runner 环境

一、开启 rainbond 我的项目构建源的自定义 API

  • rainbond 中有三个我的项目环境

    • dev 开发环境对应 dev 分支
    • test 测试环境对应 master 分支
    • prod 正式环境对应 master 分支

开启 WebHook 步骤

  • 关上 rainbond
  • 进入我的项目
  • 点击“构建源”页签
  • “主动构建设置”
  • 点击“自定义 API”页签
  • 点击“关上主动构建”
  • 复制“API”和“秘钥”

二、为 gitlab 我的项目设置 runner

先依据 附 1 中的步骤配置好,gitlab-runner 的 docker 容器

  • 进入 gitlab 我的项目
  • Settings > CD/CD > Runners “Expand”
  • 能够看到左侧“Specific runners”中就有设置 runner 的配置信息
  • 页面左下角有“Set up a specific runner manually”(注册信息,URL 及 token)
  • 进入 docker 的 gitlab-runner 容器
# 注册 runner
$ docker exec -it gitlab-runner gitlab-runner register

# 输出我的项目页面上的 URL,即 git 地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
$ http://git.abc.com/

# 输出秘钥,我的项目设置页面上
Enter the registration token:
$ testtestestest-testest

# 输出形容,这里最好填写项目名称(所有 runner 的配置会房子同一个配置文件中,这个形容能够不便辨别)Enter a description for the runner:
$ rainbond_gitlab_python

# 输出标签(重要,CICD 的配置中须要应用)Enter tags for the runner (comma-separated):
$ Auto-Group

# 输出执行器类型,个别选 shell
Enter an executor: custom, parallels, shell, ssh, docker, docker-ssh, virtualbox, docker+machine, docker-ssh+machine, kubernetes:
$ shell

# ##### 配置实现 #####

# 查看刚刚的配置
$ docker exec -it gitlab-runner cat /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "rainbond_gitlab_python"
  url = "http://git.abc.com/"
  token = "testtestestest-testest"
  executor = "shell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  • 刷新 gitlab 页面后,即可看到 runner 中多减少了“Available specific runners”
  • 下方是咱们刚刚创立的 runner

三、编写 gitlab cicd 配置

  • 在我的项目的根目录中增加 CICD 配置文件,命名为:”.gitlab-ci.yml”
  • 配置如下
default:
  tags:
    - Auto-Group

variables:
  # 我的项目名
  PROJECT_NAME: "rainbond_gitlab_python"
  FAILURE_MESSAGE: "[$PROJECT_NAME] 单元测试 / 构建失败,请查看:$CI_PROJECT_URL/-/pipelines/$CI_PIPELINE_ID/failures"

  # dev 环境构建源秘钥及地址
  DEV_API_KEY: ""DEV_API_URL:""

  # test 环境构建源秘钥及地址
  TEST_API_KEY: ""TEST_API_URL:""

  # prod 环境构建源秘钥及地址
  PROD_API_KEY: ""PROD_API_URL:""

# 失败时告诉,所有分支
job-failure:
  stage: test
  when: on_failure
  script:
    - echo $FAILURE_MESSAGE

# ------------- dev 分支配置 ------------- #
dev-build:
  stage: build
  only:
    - dev # 只针对 dev 分支
  script:
    - pip3 install --no-cache-dir -r requirements.txt
    - pytest

dev-deploy:
  stage: deploy
  only:
    - dev
  script:
    - curl -X POST -H "Content-Type:application/json" -d '{"secret_key":"'$DEV_API_KEY'"}' "$DEV_API_URL"
  after_script:
    - echo "触发构建后,减少即时通讯工具的 WebHook,告诉相干开发人员进行自测"

# ------------- master 分支配置 ------------- #
master-build:
  stage: build
  only:
    - master
  script:
    - pip3 install --no-cache-dir -r requirements.txt
    - pytest

master-unitest:
  stage: deploy
  only:
    - master
  script:
    - curl -X POST -H "Content-Type:application/json" -d '{"secret_key":"'$TEST_API_KEY'"}' "$TEST_API_URL"
  after_script:
    - echo "触发构建后,减少即时通讯工具的 WebHook,告诉相干测试人员进行测试"

master-deploy:
  stage: deploy
  only:
    - master
  when: manual
  script:
    - curl -X POST -H "Content-Type:application/json" -d '{"secret_key":"'$PROD_API_KEY'"}' "$PROD_API_URL"
  after_script:
    - echo "触发构建后,减少即时通讯工具的 WebHook,告诉公布正式环境"

附 1:gitlab-runner 环境

官网文档:https://docs.gitlab.com/runne…

  • 因为 gitlab-runner 环境只须要部署一次,所以放在附录
  • 首先要装置 docker

装置步骤

  1. docker 拉取 gitlab-runner 镜像
  2. 创立共享卷
  3. 运行容器
  4. 设置 apline linux 软件库镜像
  5. 装置 curl、python、pip
  6. 设置环境变量(很重要)
  7. 查看 gitlab-runner 配置

1. docker 拉取 gitlab-runner 镜像

该镜像以 alpine linux 为根底环境,因为应用 alpine linux 体积更小

alpine linux 官网文档:https://www.alpinelinux.org/

$ docker pull gitlab/gitlab-runner:alpine

2. 创立共享卷

有了共享卷,容器可删除重建,配置数据在共享卷中

$ docker volume create gitlab-runner-config

3. 运行容器

容器命名为 ”gitlab-runner”

$ docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:alpine

4. 设置 apline linux 软件库镜像

设置 aliyun 镜像

# 查看容器 id
$ docker ps
# 进入容器
$ docker exec -it <container-id> sh
# 设置镜像
$ sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

5. 装置 curl、python、pip

次要应用 python 代码,依据须要抉择本人的环境装置

$ apk add --no-cache curl
$ apk add --no-cache python3
$ apk add --no-cache py3-pip

alpine 应用小技巧

# 搜寻包,当装置报错找不到包时应用
$ apk search [包名]
# 如下:$ apk search python3

6. 设置环境变量(很重要)

gitlab 触发 CICD 时,加载依赖包须要须要增加 PATH,否则会报错找不到程序

以 python 我的项目为例,应用 pip 装置的 cli 须要增加 PATH:/home/gitlab-runner/.local/bin

gitlab 的入口 shell 是在 /etc/profile.d/locale.sh,所以须要在这个目录下减少 PATH

$ vi /etc/profile.d/locale.sh
# 减少 export PATH=/home/gitlab-runner/.local/bin:$PATH
# 保留退出,应用 cat 查看内容,如下
$ cat /etc/profile.d/locale.sh
export CHARSET=UTF-8
export LANG=C.UTF-8
export LC_COLLATE=C
export PATH=/home/gitlab-runner/.local/bin:$PATH

7. 查看 gitlab-runner 配置

增加了 runner 之后才会改文件

$ cat /etc/gitlab-runner/config.toml

正文完
 0