时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短.更快的发布周期.而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起.如果您有意提升发布频率,或者是不太清楚哪些工具能够帮助您达成这一目标——别担心.在今天的文章中,我们将探讨一系列最流行的CI / CD工具,并对其特性作出剖析. 什么是CI / CD?其意义何在? 在深入研究CI / CD自动化工具之前,我们首先需要了解其基本概念.正如我们所提到的,持续集成和持续部署通常与敏捷开发环境齐头并进.在这类环境中,…
Jenkins Jenkins是CI市场中最知名且最常见的名号之一.其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署.顺带一提:我们OverOps也在使用Jenkins以及自己开发的CLI工具. 它有什么作用? 与其它CI工具一样,Jenkins可以自动构建.测试及部署任务.该工具支持Windows.Mac OSX以及各类Unix系统,可以使用本机系统软件包以及Docker进行安装,也可以在安装了Java Runtime Env…
前言 写代码这项工作,本质就是将工作自动化,减少手工操作提供效率,因为人的本质都是懒狗,程序员也不能例外,为了各种意义的效率提升(懒),我们需要持续集成工具,将代码测试.编译.发布这些重复性很高的工作,全部变成自动化,减轻工作量,提高效率,解放生产力,为华夏伟大复兴贡献力量 说回正题,持续集成工具主流的就 Jenkins .Gitlab CI/CD 这些,因为我们刚好在用 Gitlab,所以就不去折腾 Jenkins 了,直接用这个好了~ 关于 Gitlab 的安装,可以参考我之前写的文章:Gi…
背景知识 通过以往几节课程的学习,相信大家对于 SAE 平台已经有了一定的了解.SAE 为客户免除了很多复杂的运维工作,开箱即用.按用量付费:与此同时 SAE 提供了丰富的 Open API,可以很容易地与其他平台做集成:类似云效以及 Jenkins 的 CI/CD 工具是敏捷软件研发实践中的重要一环,可以自动化地将客户的代码编译.测试.打包并部署至各个环境,从而提升团队的研发效率. 本篇文章分为两个部分,首先介绍使用云效平台实现从源码到 SAE 环境的持续集成,然后介绍使用 Jenkins 的…
本文来自Rancher Labs 持续集成和持续交付(CI/CD)是DevOps背后的助推力之一.如果你的企业正在考虑使用DevOps,那么CI/CD绝对是需要考虑的其中一部分.但是CI/CD到底意味着什么?为什么它如此重要呢?为了对你的DevOps工具包和IT部署进行战略规划,深入理解CI/CD至关重要.本文中,我们将探讨CI/CD所需解决的难点.需要的工具以及预期的收益. 首先,我们从大局着手.DevOps旨在创建一个流畅的工作流程,并尽可能减少越区切换和建立快速反馈回路.这意味着什么呢?工…
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 作业要求 我在这个课程的目标是 积累软件开发经验,提高工程能力 这个作业在哪个具体方面帮助我实现目标 通读课本,了解基本教学方向:初试CI/CD,为以后的项目做准备 一.阅读提问 对于书中4.4代码复审部分提到的 复审者有权提出很多看似吹毛求疵的问题,复审者不必亲自调查每一件事,开发者有义务给出详尽的回答. 我不反对复审者需要随时向开发者提问关于代码实现方面的问题,毕竟这可以大大节约复审者的时间,方便他更…
之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一种能够支持流水线作业的发布工具,能让我在进行合并代码时自动触发构建发布.有一款免费的产品能做到这一点,它就是Github Action. Github Action Github Action是由Github创建的CI/CD服务. 它的目的是使所有软件开发工作流程的自动化变得容易. 直接从GitHub构建,测…
前言 网上大多数都是针对主流的Spring Cloud.NET Core的CI/CD方案.但是目前国内绝大部分的公司因为一些历史原因无法简单的把项目从NET Framework切换升级到NET Core,又急切的需要引入CI/CD流程来提高开发体验和效率.因此,本系列博客针对这一问题,旨在解决NET Framework的持续集成难题. 面临的难题 项目结构复杂,且源代码工程结构多为一个解决方案多个项目的模式 构建比较困难,有一些项目的包管理还是以文件路径的引用方式 前后端未完全分离,目前很多公司…
前言 网上大多数都是针对主流的Spring Cloud.NET Core的CI/CD方案.但是目前国内绝大部分的公司因为一些历史原因无法简单的把项目从NET Framework切换升级到NET Core,又急切的需要引入CI/CD流程来提高开发体验和效率.因此,本系列博客针对这一问题,旨在解决NET Framework的持续集成难题. 面临的难题 项目结构复杂,且源代码工程结构多为一个解决方案多个项目的模式 构建比较困难,有一些项目的包管理还是以文件路径的引用方式 前后端未完全分离,目前很多公司…
CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断构建,测试和部署代码更改,从而减少基于有缺陷或失败的先前版本开发新代码的风险. 这有三种主要方法,每种方法都根据最适合您的策略进行应用. 持续集成(Continuous Integration, 简称CI) 考虑一个应用程序,其代码存储在GitLab中的Git存储库中.开发人员每天多次推送代码更改.…
1 - CI与CD的联系与区别 持续集成(Continuous Integration).持续交付(Continuous Delivery)和持续部署(Continuous Deployment)的过程,其实就是一个软件开发优化的过程. 统一流程:自动化地触发编译.集成.测试.交付和部署 保证集成的有序性.可靠性,减少版本发布的不合规性,避免手工打包.测试不充分等 版本可控,问题可追溯:可以回溯到具体版本 三者有着不同的目的 持续集成的目的是尽早发现问题 持续交付的目的是实现快速发布 持续部署的…
CI/CD 流水线是 DevOps 团队软件交付过程的基本组成部分.该流水线利用自动化和持续监控来实现软件的无缝交付.通过持续自动化,确保 CI/CD 流水线每一步的安全性非常重要.在流水线的各个阶段,通常需要访问凭据等敏感信息.保护这些信息对于保持强大的安全态势至关重要.本文将带你了解如何在 Jenkins CI/CD 流水线中保护密钥(Secrets). 转自 SEAL安全 在 CI/CD 流水线中使用 Secrets 如前所述,CI/CD 流水线通常需要访问敏感信息,如密码和 API 密钥…
大家好,我是来自阿里云容器服务团队的华相.首先简单解释一下何为 Kubernetes 来帮助大家理解.Kuberentes 是一个生产可用的容器编排系统.Kuberentes 一方面在集群中把所有 Node 资源做一个资源池,然后它调度的单元是 Pod,当然 Pod 里面可以有多个容器. 就像一个人左手抓着 ECS 资源或计算资源,右手抓容器,然后把它们两个匹配起来,这样它就可以作为一个容器的编排系统. 而 Cloudnative 这个概念现在会经常被大家提起,很多人迷惑 Cloudnative…
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业2 我在这个课程的目标是 认识软工,拥抱软工,提升相关能力以便日后与其朝夕相伴 这个作业在哪个具体方面帮助我实现目标 于<构建之法>中理解软工,于实际应用中理解CI/CD 一.阅读提问 1.什么是Bug? 原文参见<构建之法>第1章第2节 什么是Bug呢?简单地说,软件的行为和用户的期望值不一样,就叫Bug.例如,某聊天软件启动时就崩溃了,用户期望这个聊天软件不能崩溃.例如,某聊…
项目 内容 这个作业属于哪个课程 2021学年春季软件工程(罗杰 任健) 这个作业的要求在哪里 2021年软工-热身阅读作业#2 我在这个课程的目标是 了解和掌握现代软件开发和项目管理技术,锻炼在大规模开发中的团队协作能力 这个作业在哪个具体方面帮助我实现目标 阅读教材,在自学.发问.回答这个步骤中了解软件工程中基本概念:初步学习CI/CD相关概念和运用 阅读提问 问题一:个人在团队中应该只是一个流水线上的机器吗? 教材P47有如下段落: 软件开发有很多个人的.感情驱动的因素--我总觉得灵感是属…
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 2021年软工-个人阅读作业2 我在这个课程的目标是 提升软件开发能力与团队意识 这个作业在哪个具体方面帮助我实现目标 通过阅读<构建之法>对软工课堂内容获得一个初步的了解,尝试持续集成与交付工具,进而为将来的团队项目做准备 1. 阅读提问 我平时就很喜欢阅读,但我很少提出问题.我会习惯性的给作者提出的与我旧有知识体系矛盾的观点添加定语,形象点描述的话,有个很知名的"亚洲最大的单体教学楼&qu…
<构建之法> & Git+ & CI/CD 个人阅读作业#2 项目 内容 本作业所属课程 2020春季软件工程(罗杰 任健) 本作业要求 个人阅读作业#2 我的课程目标 具备一个软件工程师所需要的素质 本作业帮助 整体上软件工程,熟悉版本控制以及CI/CD工具 一.阅读提问 单元测试 (P26)单元测试的运行/通过/失败/不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性. 面对需要处理大量数据的模块,人为构造数据就最造成很大的重复性工作.比如上学期写编译器的时候,为了…
Eolink 前端负责人黎芷君进行了<工程化- CI / CD>的主题演讲,围绕 CI/CD 管道安全的实践,分享自己在搭建 CI/CD 管道过程中所总结的重要经验,与开发者深入讨论 "前后端" 那些事儿. 随着互联网越来越受重视,前端开发不再是简单的实现一个界面,使用 Javascript 让页面有一定的交互特效. 在同一个时期的迭代里,我们可能需要同时开发浏览器应用.桌面端,甚至是 App.小程序等等.导致了我们迫切的需要考虑一种新的方式,优化我们前端的开发工作.而 C…
drone 是一个不错的基于容器的ci/cd 工具,运行简单,同时插件也挺多,基本常见的轻量级的任务都是可以搞定的 环境准备 使用docker in docker docker-compose 文件 version: '3' services: gogs: image: gogs/gogs ports: - "10022:22" - "3000:3000" volumes: - ./data/gogs:/data depends_on: - mysql drone-…
近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末闲适的下午和明媚的阳光,决定把近来项目上的CI/CD(持续集成/持续交付)策略以及git分支模型和以前的项目做一下分析比较,希望对各位有所帮助,也能有所思考,尤其是那些期望搭建项目部署流水线或者想了解git分支模型的开发.运维人员.背景  废话不多说,由于近期做了N次release,所以对自己目前所…
说明 项目 内容 这个作业属于哪个课程 2021春季软件工程 (罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 初步获得软件工程师的能力 这个作业在哪个具体方面帮助我实现目标 了解软件开发的大概流程,了解CI/CD流程 我的疑惑 1.低层次的问题能依赖工具解决么? 关于这个问题首先是在书中第三章中关于软件工程师的成长上讨论,书中描述了一个软件工程师的面试时一直在解决低层次的问题 嗯,怎么开始一个C#的命令行程序呢? 定义数组是怎么弄的?是"int [] arr&quo…
庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境 一.介绍 说起微服务架构来,有一个环节是少不了的,那就是CI/CD持续集成的环境.当然,搭建CI/CD环境的工具很多,但是有一个工具它却是出类拔萃,是搭建持续集成环境的首选,它就是Jenkins.在这里,有关Jenkins的具体内容我就不说了,网上有很多,我在这里只做很简单的介绍.Jenkins 自动化部署可以解决集成.测试.部署等重复性的工作,工具集成的效率明显高于人工操作:并且持续集成可以更早的获取代码变更的信…
一.简介 微服务开发中自动化.持续化工程十分重要,在成熟的CI/CD环境中项目团队可以灵活分配,大大提供团队效率.如果还不了解什么是CI/CD,可以先查看相关文章,这里主要介绍环境的搭建,相关原理就不过多搬书了. 二.开始搭建 准备 目前主流的ci/cd环境都是基于容器化管理的,所以想要搭建这一环境必须熟练docker操作.版本控制选择git,构建工具选择Jenkins,所以开始前需要先掌握这些技术. Step1:安装docker Ubuntu 18.04 docker安装 docker安装方式…
[注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ============================================================================================ 1.拉取镜像 需要从官网进入:https://jenkins.io/download/ 命令: docker pull jenkins/jenki…
CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-ce:latest 2.启动容器 创建gitlab目录 启动之前,分别在gitlab目录下创建config.logs.data三个目录,分别用于挂载容器内不同文件 启动命令 docker run --detach \ --publish : --publish : --publish : \ --na…
前言:一直以来想学习与实践一下敏捷开发,之前项目虽说口口声声我们项目是敏捷开发,其实很扯. 敏捷开发如果有持续集成.持续部署的支持,那样开发.测试.运维将节省不少精力. 此系列博客只为记录CI/CD的实践与学习: 一.PHP运行环境的准备(centos7.4下安装docker环境搭建 PHP7.1 + MySQL5.7环境,openresty1.13.6.1做代理服务器) 服务器环境:阿里云ECS 操作系统:centos7.4 1. 安装docker https://help.aliyun.co…
至于nginx的docker制作,前面已介绍过. 现在使用gitlab在线编辑的方式,可实现Nginx的自定义配置并更新. .gitlab-ci.yml内容如下: variables: project_root: ./nginx www_root: /nginx/conf.d stages: - deploy php-deploy: when: manual stage: deploy script: - ls - echo deploy - sh -x deploy.sh tags: - ph…
软件开发一般来说是一项团队作业,在本系列文章开始就提到过软件的编码是由一个团队“并行”完成的,为了保证编码任务正常完成,首先引入版本控制工具来完成代码管理,为了保证代码质量引入了代码分析器以及代码测试. 版本控制工具可以保证代码有一个主版本,但代码分析和测试均是开发人员手动在本地完成的(通过编译.执行测试等方式),在进行代码分析和测试时可能并没有将本地代码更新到最新版本,这样就会出现一个问题,当多个开发人员向版本库提交代码时,无法保证最新代码库的代码是正确的,为了解决这个问题,提出了持续集成,持…
什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployment,CD):部署到测试环境.预生产环境.生产环境.持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用. 高效的CI/CD环境可以获得:• 及时发现问题• 大幅度减少故障率• 加快迭代速度• 减少时间成本 接下来是实战: 环境说明: 192.168.1.3…
什么是 CI/CD? 在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语.但它们真正的意思是什么呢? 在谈论软件开发时,经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语.但它们真正的意思是什么呢?在本文中,我将解释这些和相关术语背后的含义和意义,例如持续测试Continuous Testing和持续部署Conti…