Gitlab CI/CD入门(一)Python项目的CI演示

这篇具有很好参考价值的文章主要介绍了Gitlab CI/CD入门(一)Python项目的CI演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  本文将介绍CI/CD的基本概念,以及如何使用Gitlab来实现CI/CD。
  本文介绍的CI/CD项目为个人Gitlab项目:gitlab_ci_test,访问网址为:https://gitlab.com/jclian91/gitlab_ci_test。

CI/CD的含义

  在现代软件工程中,CI即持续集成(Continuous integration),CD有两重含义,即持续交付(Continuous Delivery)持续部署(Continuous Deployment),CI/CD是软件工程中的重要过程。
  CI,联系到具体的开发运维场景,就是指开发者在完成项目中的一个小特性后,将自己分支的代码合并到测试分支,这个过程就是集成,在集成过程中,会运行一系列代码格式的检查、单元测试等严格保证项目质量的检查作业。
  CD有两种含义:

  1. 持续交付,完成CI中的所有作业后,持续交付可自动将已验证的代码发布到储存库。持续交付是拥有可随时部署到生产环境的artifaces或Docker镜像,这一过程一般手动实现
  2. 持续部署,鉴于部署环境和部署方式的差异以及各种应用之间的耦合,部署这一项任务不再是简单的几行命令就能搞定的了。持续部署意味着只要提交了代码,就可以实现将代码自动部署至指定环境,如测试环境、开发环境等。这对于项目开发是十分方便、高效的。

  Gitlab CI/CD最初是Gitlab于2015年6月发布的一个特性,它支持在项目中编写一个.gitlab-ci.yml文件来定义一组自动化作业(Job),这些自动化作业组成一条自动化流水线(Pipeline)。2016年,Gitlab又推出了自研的Gitlab Runner软件包,以此作为流水线的运行环境。当开发者提交或合并代码时,Gitlab CI/CD会自动运行测试用例,构建、部署环境,并且开发者能在Gitlab中看到整个流程的所有信息,包括日志、流程和artifacts,不需要登录Gitlab之外的任何平台。
  Gitlab CI/CD的典型工作流程如下:
Gitlab CI/CD入门(一)Python项目的CI演示
  Gitlab CI/CD特性如下:

  • 开源: CI/CD是开源GitLab社区版和专有GitLab企业版的一部分。
  • 易于学习: 详细的官方操作文档。
  • 无缝集成: CI/CD是GitLab的一部分,支持从计划到部署,具有出色的用户体验。
  • 可扩展: 可以根据需要添加任意数量的构建节点。
  • 更快的结果: 每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行。
  • 针对交付进行了优化: 多个阶段,手动部署, 环境和变量。

Gitlab Runner

  Gitlab Runner是一个用于运行Gitlab CI/CD流水线作业的软件包,由Gitlab官方开发,完全开源,支持在主流的系统上安装、运行,比如Windows, Linux, MacOS等。在笔者的MacOS系统中,安装方式为:

brew install gitlab-runner

  Gitlab Runner分为三种类型,在注册Runner过程中使用不同类型的token就能区分不同的类型。

  • Shared Runners,共享Runner,可以被仓库里面的任意项目使用。token获取位置为全局管理中心-Runner-注册令牌。
  • Group Runners,组Runner,仅能被某个组中的任意项目使用。token获取位置为项目群组-CICD-Runner-注册令牌。
  • Specific Runners,特定Runner,仅能被指定的项目使用。token获取位置为项目-设置-CICD-Runner-注册令牌。

  本文中使用Specific Runners,我们为项目申请特定Runner,如下图:

  1. 创建项目Runner

Gitlab CI/CD入门(一)Python项目的CI演示
2. 选择Linux平台,tags自己填写,点击Create Runner按钮
Gitlab CI/CD入门(一)Python项目的CI演示
3. Runner创建完毕,可获取url和token
Gitlab CI/CD入门(一)Python项目的CI演示
4. 在本地电脑上,注册Runner:gitlab-runner register --url https://gitlab.com --token glrt-xxx,token为第3步中的token。
Gitlab CI/CD入门(一)Python项目的CI演示
5. 查看Runner及运行Runner:
Gitlab CI/CD入门(一)Python项目的CI演示
6. 至此,项目中的Runner已配置完毕,我们可以运行CI/CD流水线了。
Gitlab CI/CD入门(一)Python项目的CI演示

.gitlab-ci.yml

  在一个项目中,流水线文件通常是放在.gitlab-ci.yml文件中,该文件采用YAML格式书写。
  在编写.gitlab-ci.yml文件前,我们需了解几个基本概念。

  • 流水线(Pipeline):流水线由.gitlab-ci.yml文件定义,它是一系列作业的组装。这些作业按照一个顺序运行,行程一条流水线。触发流水线的操作可以是代码推送、创建tag、合并请求,以及定时触发。
  • 阶段(Stages):流程组成流水线,主要用于给作业分组。阶段会由上到下按顺序执行。
  • 作业(Job):作业组成阶段,是最基础的执行单元。同一个阶段的作业是并行运行的。

  以下是一个测试流水线,它包含3个阶段:install,build,deploy,顺序执行,每个阶段都有各自的作业。当代码提交至主分支时,便会触发流水线。

stages:
  - install
  - build
  - deploy

install_job:
  stage: install
  script:
    - echo "hello install"

build_job:
  stage: build
  script:
    - echo "hello build"

deploy_job:
  stage: deploy
  script:
    - echo "hello deploy"

Gitlab CI/CD入门(一)Python项目的CI演示
我们查看deploy_job的运行结果:
Gitlab CI/CD入门(一)Python项目的CI演示
  接下来,我们对本项目进行流水线配置,如下:

stages:
  - build
  - deploy

build-job:
  stage: build
  script:
    - echo `date`
    - echo "Hello, $GITLAB_USER_LOGIN!"
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

deploy-job:
  image: docker
  # necessary for my macbook
  variables:
    DOCKER_TLS_CERTDIR: ""
    DOCKER_HOST: "tcp://docker:2375"
  services:
      - docker:dind
  # necessary for my macbook
  stage: deploy
  script:
    - docker build -t flask_blue_print:$CI_COMMIT_SHORT_SHA .
    - docker run -d -p 5005:5000 --name flask_demo flask_blue_print:$CI_COMMIT_SHORT_SHA
    - docker ps

该流水线的阶段为:build和deploy,build阶段中的build-job进行简单测试,deploy阶段中的deploy-job使用Docker进行部署。
Gitlab CI/CD入门(一)Python项目的CI演示
Gitlab CI/CD入门(一)Python项目的CI演示
流水线采用Docker部署,执行成功,但本地电脑的Docker服务并没有运行该服务,原因为Gitlab与Gitlab-Runner不在一个环境中。

总结

  本文主要介绍了CI/CD的基本概念以及Gitlab CI/CD的简单使用。有了Gitlab CI/CD,我们就可以保证项目代码质量(需代码测试),并且方便、高效地进行代码更新,持续集成和持续部署,对于我们提高工作效率有很大改善。文章来源地址https://www.toymoban.com/news/detail-498659.html

参考文献

  1. gitlab-ci的简易入门—基于python项目的CI演示:https://mp.weixin.qq.com/s/aQmdusndVdxHo1rrj7eg1w
  2. docker部署gitlab CI/CD (二)终篇:部署gitlab runner和添加gitlab-ci.yml文件 终极踩坑版:https://www.cnblogs.com/gaoxiong666/p/17336256.html
  3. Gitlab CI/CD 简单介绍:https://blog.csdn.net/wangjiang_qianmo/article/details/122867335
  4. Gitlab官方网站:https://docs.gitlab.com/ee/ci/
  5. Gitlab CI/CD从入门到实战,庞梦臣著,人民邮电出版社,2023-04-01

到了这里,关于Gitlab CI/CD入门(一)Python项目的CI演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念

    目录 一、为什么要做 CI/CD ? 1.1 背景-传统的应用开发发布模式 问题 1.2 持续集成与持续交付 持续集成(CI) 持续交付(CD) 持续部署(CD) 1.3 CI/CD 的价值体现 1.4 推荐常用的 CI/CD 工具 Jenkins GitLab 二、GitLab CI/CD 功能简介 2.1 GitLab 内置持续集成功能 持续集成(CI) 连续交付(

    2024年02月16日
    浏览(69)
  • 基于SNAT+DNAT发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目

    目录 项目名称 项目架构图 项目环境 项目概述 项目准备 项目步骤 一、修改每台主机的ip地址,同时设置永久关闭防火墙和selinux,修改好主机名,在firewalld服务器上开启路由功能并配置snat策略。 1. 在firewalld服务器上配置ip地址、设置永久关闭防火墙和selinux,并修改好主机名

    2024年02月09日
    浏览(58)
  • Gitlab CI/CD概述

    CI/CD 是一种持续开发软件的方法,可以不断的进行构建、测试和部署代码迭代更改。这种迭代有助于减少基于错误或失败的版本进行开发新代码的可能性。使用这种方法,从新代码开发到部署,可以减少人工干预甚至不用干预。 达到持续的方法主要是: 持续集成 , 持续交付

    2024年02月12日
    浏览(68)
  • gitlab CI/CD 安装 gitlab runner

    一、为什么需要安装gitlab runner ? 极狐GitLab Runner 是在流水线中运行作业的应用,与极狐GitLab CI/CD 配合运作。 说白了就是你部署的一个agent。 二、如何安装? 1.介绍通过helm部署github runner 2.helm添加仓库 helm repo add gitlab https://charts.gitlab.io 3.拉取chars helm pull gitlab/gitlab-runner -- 拉

    2024年02月14日
    浏览(65)
  • Gitlab CI/CD: rules和only

    rules 和 only 都是在 GitLab CI/CD 配置中用于控制作业(job)何时执行的,但它们之间有一些不同之处: only : only 用于定义在特定情况下触发作业的条件。你可以指定一系列触发条件,只有当至少一个条件匹配时,作业才会被触发执行。 only 通常用于根据分

    2024年02月03日
    浏览(68)
  • DevOps系列文章之 GitLab CI/CD

    由于目前公司使用的gitlab,大部分项目使用的CICD是gitlab的CICD,少部分用的是jenkins,使用了gitlab-ci一段时间后感觉还不错,因此总结一下 介绍gitlab的CICD之前,可以先了解CICD是什么 我们的开发模式经历了如下的转变:瀑布模型-敏捷开发→DevOps(Development、Operations的组合词,是

    2024年01月22日
    浏览(56)
  • 【基于 GitLab 的 CI/CD 实践】03、GitLab Pipeline 实践(上)

    目录 一、GitLab Pipeline 流水线语法有哪些?流水线参数列表 如何检查语法错误?流水线语法检测 二、Pipeline 基础语法 job script before_script after_script stages 未定义 stages ​定义 stages 控制 stage 运行顺序   .pre .post stage variables 综合实例(一) tags allow_failure when manual 手动 delayed 延迟

    2024年02月17日
    浏览(62)
  • 纯手工搭建 GitaLab与Gitlab-CI/CD--附 gitlab-ci.yml示例

    作者:javastarboy 背景:前几年(2018 年前后)的 jenkins+docker+k8s 的CI/CD 在工作之中受益不少。提升了不少工作效率。而随着这几年的使用发现,目前 gitlab-CI/CD 在持续集成部署中更加方便、高效。 尤其是在测试环节中,研发无需编写复杂的 jenkins 脚本,只要提交代码,即可自动

    2023年04月08日
    浏览(54)
  • 【基于 GitLab 的 CI/CD 实践】02、gitlab-runner 实践

    目录 一、gitlab-runner 简介 1.1 要求 1.2 特点 二、GitLab Runner 安装 2.1 使用 GItLab 官方仓库安装 2.2 使用 deb/rpm 软件包 2.3 在容器中运行 GitLab Runner 三、GitLab Runner 注册 3.1 GitLabRunner 类型 3.2 获取 runner token 获取 shared 类型 runner token   ​获取 group 类型的 runner token   ​获取 speci

    2024年02月16日
    浏览(54)
  • docker部署gitlab CI/CD (一)第一篇:部署gitlab及汉化

    网上很多类似教程,但多少有点夹带私货,有的竟然拉取的第三方镜像,而且很多都要修改配置文件,完全不知道是为什么,于是结合其他人的博客和官方文档, 知其然也要知其所以然,于2023年4月17日写下这篇。 官方文档: https://docs.gitlab.com/ee/install/docker.html 主要参考博客

    2023年04月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包