前言
在自己的运维工作中,有接触到一些,自动化脚本的任务。
什么,每天定时收集对应于域名的访问情况,收集状态码信息,然后汇总输出,给客户,或者给内部的运维群。
自己有稍微接触过类似的流程。特指,自己写了一些脚本,但仅限于自己使用,没有上传到公司平台,也没有实现自动化的调用。
趁着最近对这个东西感一点兴趣,决定粗略学习一下,用一个基本的案例,来感受这一整套流程。
这一次的任务是:
- 在自己的服务器里面搭建一个基础的CD/CI平台
- 完成一个基础的自动化任务。
- 自动化任务为:每1分钟,访问百度首页,掘金首页和Bilibili首页,收集访问的状态码和访问时间,并保存在linux机器上,供Grafana调用统计。(有想过接入微信等接口,然后将访问结果输出给自己的微信。后面考虑到,公司平台的接口和当前的不大一致,自己也懒得整第二个微信账号,遂作罢。)
大致了解什么是CI/CD
百度看了看,掘金看了看。
大概了解到,CI/CD是一个概念。
一个,让应用开发,在开发速度和维护线上服务稳定之间保持一个平衡的方案。
什么持续集成、持续交付、持续部署。我的理解就是,把开发、测试和线上部署三个流程,加入自动化工具,减少人的工作量,但不减少人的决策力度。
CI/CD平台安装
目前,最流行的(在我耳边出现次数最多的)有两个平台。
Jenkins和GitLab。(GitLab好像有国内的正统网站,就不贴墙外的了。)
大致了解一番后,感觉GitLab可能会更简单一点,决定安装GitLab。
GitLab的安装
按照官网的步骤来吧。(如果你没有登录账号的话,查看不了。)
我懒得参照官网的步骤了,直接用Docker的官方镜像站,拉取创建了一个容器。
然后自己本地HOST一下,通过Nginx反向代理一下。
注意端口不要冲突,把GitLab的监听端口改成8088之类的就行。
GitLab的默认账号和密码
安装好之后,了解到平台会自动创建一个初始账号root,对应密码就在/config/目录下。
/config/initial_root_password
复制粘贴登录就行。
修改密码的大致步骤如下。
后续接触英语的地方很多,这个就不换了。不会看的英语,多接触接触就熟悉了。
和 Visual Studio Code 绑定
创建token
在用户界面,点击编辑配置文件(edit profile),然后就可以在左侧的界面,看到Access Token的按钮了。
官方文档有说访问范围的细节,不过我不是很在意(还没涉及到权限的问题),暂时全部勾选。
就创建好了。
Code 的准备过程
首先就是,在插件商店,把对GitLab的工作流插件给安装好。
安装好之后,点击对应图标,输入GitLab的网址进行验证。
输入完之后,填Token。因为我已经创建好了,所以选择第二个Enter an existing token(输入一个已经存在的token)。
等它自己运行一小会儿,就会在左下角弹出来一个成功的消息。
到这里,我认为准备工作都做好了。
第一次尝试
本地测试
我直接找豆包了,让他给我安排一个新手任务。
my-flask-app/
├── app.py # Flask应用主文件
├── tests/ # 测试目录
│ └── test_app.py # 测试文件
├── requirements.txt # 依赖列表
└── .gitlab-ci.yml # GitLab CI/CD配置文件
项目的目录大概如上。
在安装好依赖之后,尝试运行flask的服务端。
直接访问,得到一个helloworld。
在控制台也可以看到对应的简单请求记录。
尝试上传
我觉得测试没问题,尝试上传看看。
经过一些选择,最后也是顺利地把项目推到GitLab了。
紧急补救——GitLab的runner安装
上传过后,也没发现什么自动化管线啥的。
大概搜索了下过程,发现有个什么runner组件啥的要安装,我觉得应该是我前期准备工作没做好,现在决定补上。
对应的token,可以在项目的CI/CD里面创建,创建完就可以在Project Runner上看到了。
不过,有点小问题,还得琢磨一下。