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/runner/install/docker.html

  • 由于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

GitLab + Rainbond 打造Devops流程的更多相关文章

  1. 大揭秘| 我司项目组Gitlab Flow && DevOps流程

    长话短说,本文全景呈现我司项目组gitlab flow && devops Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架. Dev ...

  2. 基于GitLab+Jenkins的DevOps赋能实践

    随着微服务.中台架构的兴起,DevOps也变得非常关键,毕竟是一些基础设施层面的建设,如果搞好了对后面的研发工作会有很大的效率提升.关于DevOps本身的概念,网上已经非常多了,在园子里随便搜索一些都 ...

  3. GitLab+Rancher实践DevOps【转载】

    摘要 本文描述使用自建GitLab和Rancher实践持续集成/持续交付流水线的过程,并用Rancher实现容器编排和蓝绿发布. GitLab持续集成 GitLab持续集成/持续交付流程图:部署Git ...

  4. 基于 Jenkins + Kubernetes + Argo CD 的完整 DevOps 流程记录(1) - 环境部署

    一.环境准备 1.1 镜像仓库 整套 DevOps 流程使用 Harbor 作为内部镜像仓库,所有构建产物(镜像)都会推送到 Harbor,以备后续进行项目部署.Harbor 从 2.x 版本开始支持 ...

  5. ASP.NET Core 连接 GitLab 与 MatterMost 打造 devops 工具

    在现代化开发工具链里面就包含了自动化的通讯工具,而日志写代码我是推到 Gitlab 平台上,我今天听了郭锐大佬的分享之后,感觉我现在的团队的自动化做的远远不够.我在他的课程上学到的最重要一句话就是做工 ...

  6. Jenkins + Gitlab + Ansible--playbook 代码上线流程(文末有免费视频)

      jenkins 构建是支持 git 选择分支 安装 Git Parameter 插件在系统管理中的插件管理 然后点击选插件,在右上角输入 Git Parameter,找到 Git Paramete ...

  7. gitLab操作规范和项目流程

    刚做完一个项目并且艰难得上线,对整个项目流程和gitLab规范 有了一些心得,给新来的同学普及一下. 最先产品会写一篇需求文档,咱们要先看需求文档对项目有一个大致了解,然后产品喊后端.ui.前端  一 ...

  8. 阿里云-容器服务之集群服务 k8s(Jenkins+gitlab+k8s的devops)- 04

    配置jenkins和gitlab: 1.进入jenkins,新增一个项目,demo-piepeline,创建好,点击配置, 2 .设置镜像地址的命名空间: 3.设置镜像的名字 4.设置代码的分支或者t ...

  9. 阿里云-容器服务之集群服务 k8s(Jenkins+gitlab+k8s的devops)- 01

    由于docker官方停止更新Swarm,另外swarm在使用期间出现了很多bug,所以阿里云也在2019年7月发布公告:于2019年12月31日起停止技术支持,请您尽快迁移至容器服务Kubernete ...

  10. Devops流程规范

    芯盾时代_Devops_Docker操作说明及使用规范 北京芯盾时代科技有限公司 2019年1月 修订记录 版本号 修订人 修订日期 修订描述 v0.1 芯盾 2019/1/15 初次创建 v0.2 ...

随机推荐

  1. kubeSphere v3.3.0+kubernetes v1.22.10 集群部署

    概述 KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地.很多用户都在使用 KubeSphere 运行工作负载.对于在 Linux 上的安装,KubeSphere ...

  2. Kubernetes--标签选择器(标签)

    标签选择器用于表达标签的查询条件或选择标准,Kubernetes API目前支持两个选择器:基于等值关系(equality-based)以及基于集合关系 (set-based).例如,env=prod ...

  3. Mysql之迂回连接术

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14932870.html 关键词:OmniDB.Mysql Router 背景:项目的测试数据库放在了生产机 ...

  4. java spring 理解

    1.spring IOC容器 其实就是 new 了一个 ApplicationContext 类对象.->应用上下文对象. 2.应用上下文对象 实例化.配置,并管理 bean. 所以上下文对象是 ...

  5. java-Stream流的常见方法

    一  常见创建流的三种方式 //list集合创建流方式 new ArrayList<>().stream(); new HashSet<>().stream(); //map集 ...

  6. SpringCloud基本认知

    SpringCloud基本认知 ​ 本文学习自<重新定义SpringCloud> 微服务架构概述 应用架构的发展 应用是可独立运行的程序代码,提供的相对应完善的业务功能. 目前软件架构有三 ...

  7. [部署日记]GO在Visual Studio Code初次运行时提示The "gopls" command is not available. Run "go get -v golang.org/x/tools/gopls" to install.

    本以为VSC在商城装上插件后就能拎包入住,F5的时候我当场好家伙 于是无脑Install... Installing github.com/nsf/gocode FAILED Installing g ...

  8. window JAVA 环境变量配置

    java win环境变量配置1.安装的时候拷贝出,安装目录C:\Program Files\Java\jdk1.8.0_40\2.在系统变量中,点击"新建",弹出窗口后在变量名输入 ...

  9. thunar文件管理器修改默认的关联的终端

    有时候在文件管理器的文件夹中打开终端操作很方便.目前好用的文件管理器基本和虚拟中终端基本上是各个桌面环境的配套产品. 比如xfce环境的thunar文件管理器如果想搭配lxde环境的lxtermina ...

  10. 第三周day3

    第三周day3,星期三 所花时间:1h 代码量:48 博客量:1 了解知识:Button触发点击事件的三种实现方式,onClick.匿名内部类方式.接口方式.