共计 4377 个字符,预计需要花费 11 分钟才能阅读完成。
GitLab + Rainbond 打造 Devops 流程
流程
- 预设我的项目有两个分支,dev 和 master
- dev 分支对应 dev 环境
- master 分支对应 test 环境和 prod 环境
- 开发在 dev 中编写代码,提交 git 时触发 dev 环境构建
- 开发在 dev 自测实现,将 dev 分支代码合并 master 分支并提交 git
- master 提交操作触发 test 环境构建,告诉测试人员进行测试,并附加构建地址(gitlab CICD)
- 测试不通过则开发持续开发,反复上述流程
- 测试通过则登录 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
装置步骤
- docker 拉取 gitlab-runner 镜像
- 创立共享卷
- 运行容器
- 设置 apline linux 软件库镜像
- 装置 curl、python、pip
- 设置环境变量(很重要)
- 查看 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
正文完