07-接着玩-linux的CD/CI全流程体验

116 阅读4分钟

前言

在自己的运维工作中,有接触到一些,自动化脚本的任务。

什么,每天定时收集对应于域名的访问情况,收集状态码信息,然后汇总输出,给客户,或者给内部的运维群。

自己有稍微接触过类似的流程。特指,自己写了一些脚本,但仅限于自己使用,没有上传到公司平台,也没有实现自动化的调用。

趁着最近对这个东西感一点兴趣,决定粗略学习一下,用一个基本的案例,来感受这一整套流程。

这一次的任务是:

  1. 在自己的服务器里面搭建一个基础的CD/CI平台
  2. 完成一个基础的自动化任务。
  3. 自动化任务为:每1分钟,访问百度首页,掘金首页和Bilibili首页,收集访问的状态码和访问时间,并保存在linux机器上,供Grafana调用统计。(有想过接入微信等接口,然后将访问结果输出给自己的微信。后面考虑到,公司平台的接口和当前的不大一致,自己也懒得整第二个微信账号,遂作罢。)

大致了解什么是CI/CD

百度看了看,掘金看了看。

大概了解到,CI/CD是一个概念。

一个,让应用开发,在开发速度和维护线上服务稳定之间保持一个平衡的方案。

什么持续集成、持续交付、持续部署。我的理解就是,把开发、测试和线上部署三个流程,加入自动化工具,减少人的工作量,但不减少人的决策力度。

CI/CD平台安装

目前,最流行的(在我耳边出现次数最多的)有两个平台。

Jenkins和GitLab。(GitLab好像有国内的正统网站,就不贴墙外的了。)

www.jenkins.io/

image.png

gitlab.cn/

image.png

大致了解一番后,感觉GitLab可能会更简单一点,决定安装GitLab。

GitLab的安装

按照官网的步骤来吧。(如果你没有登录账号的话,查看不了。)

gitlab.cn/install/

image.png

我懒得参照官网的步骤了,直接用Docker的官方镜像站,拉取创建了一个容器。

然后自己本地HOST一下,通过Nginx反向代理一下。

注意端口不要冲突,把GitLab的监听端口改成8088之类的就行。

image.png

GitLab的默认账号和密码

安装好之后,了解到平台会自动创建一个初始账号root,对应密码就在/config/目录下。

/config/initial_root_password

image.png

复制粘贴登录就行。

image.png

修改密码的大致步骤如下。

后续接触英语的地方很多,这个就不换了。不会看的英语,多接触接触就熟悉了。

image.png

和 Visual Studio Code 绑定

创建token

gitlab.cn/docs/en/ee/…

在用户界面,点击编辑配置文件(edit profile),然后就可以在左侧的界面,看到Access Token的按钮了。

image.png

官方文档有说访问范围的细节,不过我不是很在意(还没涉及到权限的问题),暂时全部勾选。

image.png

就创建好了。

image.png

Code 的准备过程

首先就是,在插件商店,把对GitLab的工作流插件给安装好。

image.png

安装好之后,点击对应图标,输入GitLab的网址进行验证。

image.png

image.png

输入完之后,填Token。因为我已经创建好了,所以选择第二个Enter an existing token(输入一个已经存在的token)。

image.png

等它自己运行一小会儿,就会在左下角弹出来一个成功的消息。

image.png

到这里,我认为准备工作都做好了。

第一次尝试

本地测试

我直接找豆包了,让他给我安排一个新手任务。

image.png

my-flask-app/
├── app.py              # Flask应用主文件
├── tests/              # 测试目录
│   └── test_app.py     # 测试文件
├── requirements.txt    # 依赖列表
└── .gitlab-ci.yml      # GitLab CI/CD配置文件

项目的目录大概如上。

在安装好依赖之后,尝试运行flask的服务端。

image.png

直接访问,得到一个helloworld。

image.png

在控制台也可以看到对应的简单请求记录。

image.png

尝试上传

我觉得测试没问题,尝试上传看看。

image.png

image.png

image.png

image.png

image.png

image.png

经过一些选择,最后也是顺利地把项目推到GitLab了。

image.png

紧急补救——GitLab的runner安装

上传过后,也没发现什么自动化管线啥的。

大概搜索了下过程,发现有个什么runner组件啥的要安装,我觉得应该是我前期准备工作没做好,现在决定补上。

image.png

对应的token,可以在项目的CI/CD里面创建,创建完就可以在Project Runner上看到了。

image.png

image.png

不过,有点小问题,还得琢磨一下。

image.png