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

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

评论

发表回复

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

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理