Gitlab CICD
简介
最近公司要求要通过Gitlab CICD做一个项目的自动打包,我之前也没接触过,所以只能现学现卖。不过说实话,让我这个连大学英语四级都没过的人看Gitlab官网的纯英文教程,我真的是脑阔昏,于是一顿翻译加上网上一堆帖子,总算是研究了个大概。
CICD基础介绍
CI/CD 是一种持续开发软件的方法,可以不断的进行构建、测试和部署代码迭代更改。这种迭代有助于减少基于错误或失败的版本进行开发新代码的可能性。使用这种方法,从新代码开发到部署,可以减少人工干预甚至不用干预。
达到持续的方法主要是:持续集成,持续交付,持续部署。
CI(Continuous Integration):持续集成,也就是当每一次更改的代码被推送到远程分支后,可以创建一组脚本来自动地构建和测试这些更改,确保这些更改可以通过一些基本的准则,减少引入错误的机会。
CD :
Continuous Delivery:持续交付,在持续集成的基础上更进一步,当每一次更改的代码落库后,不仅会构建和测试,也会进行部署,但是部署需要人工干预,手动的有目的进行部署。
Continuous Deployment:持续部署,持续集成之外的另一个步骤,类似于持续交付。不同之处在于,它不是手动部署应用程序,而是将其设置为自动部署。不需要人为干预。
Gitlab CI/CD
Gitlab CI/CD 也就是 Gitlab 提供了上面的 CI/CD 能力,可以进行持续集成,持续交付和持续部署。
Gitlab CI/CD 适用于通用的开发工作流程。
当将本地 commits 推送到在 Gitlab 上的远程分支上,就会触发项目的 CI/CD pipeline:
自动运行(串行或并行)脚本:
构建和测试应用程序;
在应用程序中查看修改,检查是否和本地运行一样。
当达到预期以后:
Review 和 Approve 更改的代码;
合并分支,然后 GitLab CI/CD会自动地将更改部署到生产环境中。
在CI/CD 过程中,如果遇到失败,可以回滚修改的代码:
具体操作流程
上面说了一堆,其实是我在网上别人的贴子上copy的(哈哈哈),说起来很复杂,其实也没什么东西,简单来说三点:
1、gitlab-runner # 需要下载、安装、启动、注册、运行 2、.gitlab-ci.yml # 写我们需要的脚本 3、pipeline # push代码或者merge代码runner都会自动执行yml中的脚本,不需要我们动,可以在pipeline下面的job中看到具体运行详情
作用:
1、gitlab-runner
想要实现程序自动打包,需要安装一个gitlab-runner(官网),安装步骤如下:
1.下载gitlab-runner # 具体的版本看需求而定,我是windows的 2.改名为gitlab-runner.exe并放在新创建的C:\gitlab-runner文件夹下 # 流程: cd C:\gitlab-runner 使用内置系统账户启动 gitlab-runner.exe install gitlab-runner.exe start 使用当前用户账号启动,跟上面那个2选1即可 gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD gitlab-runner.exe start gitlab-runner.exe register # 输入这条命令,点击回车,如下: Enter the GitLab instance URL (for example, https://gitlab.com/): https://gitlab.com/ # 这里用下图中的url,docker:填域名+gitlab访问地址 Enter the registration token: iqxKz5XTz4w_2RxiSQ5S # 这里用下图中的token Enter a description for the runner: # 直接回车也可以随便填 Enter tags for the runner (comma-separated): # 直接回车也可以随便填 Registering runner... succeeded runner=iqxKz5XT gitlab-runner.exe run-single # 注册完要把gitlab-runner跑起来
2、.gitlab-ci.yml
我们在 .gitlab-ci.yml 需要写个脚本,当push到gitlab上的时候,gitlab-runner会直接调用这个脚本在pipeline上运行,脚本实例如下:
stages: - test variables: PROJECT: "WO_API_Server" before_script: - python.exe -m pip install --upgrade pip -i 镜像源 job1: stage: test script: - pip install pyinstaller -i 镜像源 - pyinstaller -F ./Run_WO_API_Server.py artifacts: name: $PROJECT # 如果这里的name对应的值为字符串就要用${PROJECT}的形式传递变量 paths: - dist/ # 只能使用项目中存在的文件夹路径 tags: - windows-vs2022bt-lv only: - dev
具体的脚本内容大家可以自行去看官网,我就不细说啦。
补充:
'.gitlab-ci.yml' 的配置文件需要创建在项目的根目录下,如下图所示:
创建完后在该yaml配置文件内写上你要执行的脚本,当我们push代码或者merge代码的时候pipeline会把yml文件的脚本交给runner执行,就可以实现自动打包、部署等功能啦。