jjzjj

基于云效Flow落地自动化构建——构建集群

云效DevOps 2023-03-28 原文
基于云效Flow落地自动化构建,构建集群,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,基于云效Flow自动化构建工具,构建集群操作群指南。
 
 
云效构建集群,云效Flow 支持用户个性化的构建场景,提供三种类型的构建集群的能力支持。用户在流水线编排时,可以为任务设置不同的构建集群。
 

北京和中国(香港)构建集群

 
为解决用户下载海外构建依赖或者连接海外服务的场景需求,Flow 分别提供了北京构建集群和香港构建集群。
 
使用构建集群
 
在任务节点选择构建集群,默认使用北京构建集群。
 
 

自有构建集群

 
如果有特殊的构建环境需求,用户也可在 Flow 中创建并使用私有的构建集群。
 
云效流水线 Flow 支持使用用户阿里云 ECS 或者自有主机作为构建集群。
 
对于上述的主机类型,需要确认以下配置:
  1. 支持的 OS 类型:Linux
  2. 推荐配置:4 核 8G 或以上
  3. 安装并启动 Docker Daemon:https://docs.docker.com/engine/install/
  4. 验证 Docker 运行状态:在主机上执行命令 sudo docker ps; echo $?,输出应该为 0
  5. 对于使用阿里云ECS主机作为构建集群的情况,需要确保云助手处于运行状态
 
创建自有构建集群
 
通过 构建集群管理 -> 新建构建集群,开始创建自有构建集群。
 
 
你可以创建两种类型的主机组:
 
使用自有构建集群
 
在任务节点选择构建集群,切换为自有构建集群。
 
 
图2.使用构建集群
 

构建语言支持

 
云效流水线 Flow 通过多种构建步骤,支持不同语言的构建能力。下面描述构建环境中安装的软件清单,及不同语言场景下的使用方法。
 

公共软件

 
所有构建环境都包含的软件:
  1. gcc/g++ 4.8.4
  2. make 3.8.1
  3. curl 7.35.0
  4. wget 1.15
  5. unzip 6.00
  6. git 1.9.1
  7. python 3.5(不在PATH中,需要使用/usr/alibaba/install/python-3.5.0/bin/python3来引用)
 
各语言构建环境中的软件及使用方法
 

 

 

 
对应的构建能力都是通过基础构建机支持,基础环境已经支持了上述构建能力,如上述能力无法支持你的构建需求,请你联系我们的客服以获取更多的支持。
 

设置依赖下载访问凭证

 
环境变量
 
在构建过程中,需要设置仓库的访问凭证并下载构建依赖,为保护访问凭证的安全性,Flow 支持通过环境变量设置访问凭证,关于环境变量请查看:环境变量
 
当然,作为企业统一管控的仓库访问凭证,我们更建议您使用通用变量组进行管理,关于通用变量组请查看:通用变量组
 
以下,提供了如何使用环境变量配置 Java、NPM 和 GoLang 仓库访问凭证的指南。
 
Java
 
1、在settings.xml中添加私库的地址和账号/密码(环境变量)。
 
<servers>
  <server>
    <id>rdc-releases</id>
    <username>${MVN_USERNAME}</username>
    <password>${MVN_PASSWORD}</password>
  </server>
  <server>
    <id>rdc-snapshots</id>
    <username>${MVN_USERNAME}</username>
    <password>${MVN_PASSWORD}</password>
  </server>
</servers>

<profiles>
  <profile>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <id>rdc-private-repo</id>
    <repositories>
      <repository>
        <id>rdc-releases</id>
        <url>https://packages.aliyun.com/maven/repository/2000093-release/</url>
      </repository>
      <repository>
        <id>rdc-snapshots</id>
        <url>https://packages.aliyun.com/maven/repository/2000093-snapshot/</url>
      </repository>
    </repositories>
  </profile>
</profiles>

  

将其中相关的<url>内容替换成您自己的私库地址。

 
2、在流水线中配置账号密码的环境变量。
 
 
 
3、在流水线运行命令中, 使用settings.xml
 
 
 
NPM 和 GoLang
 
1、在流水线中配置账号密码的环境变量。
 
 
2、在npm installgo get之前,添加如下命令。
 
git config --global url."https://${GIT_USERNAME}:${GIT_PASSWORD}@codeup.aliyun.com".insteadOf "https://codeup.aliyun.com"

   

 
 
其中:
 
GIT_USERNAME:是您在第 1 步中配置的私有 git 仓库的用户名环境变量的名称。
 
GIT_PASSWORD:是您在第 1 步中配置的私有 git 仓库的密码环境变量的名称。
 
将其中的codeup.aliyun.com部分替换成您实际使用的 git 仓库的域名,比如github.com
 
基于云效Flow落地自动化构建,构建集群,云效流水线Flow是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅,基于云效Flow自动化构建工具,构建集群操作群指南。
 
 

关于我们

更多关于云效DevOps的干货及云效动态,可微信搜索关注【云效】公众号~

彩蛋:公众号后台回复【指南】,可获得《阿里巴巴DevOps实践指南》&《10倍研发效能提升案例集》~

看完觉得对您有所帮助别忘记点赞、收藏和关注呦~

有关基于云效Flow落地自动化构建——构建集群的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

  4. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  5. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  6. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  7. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  8. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  9. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  10. ruby - 在 ruby​​ 中使用自动创建插入数组 - 2

    我想知道是否可以通过自动创建数组来插入数组,如果数组不存在的话,就像在PHP中一样:$toto[]='titi';如果尚未定义$toto,它将创建数组并将“titi”压入。如果已经存在,它只会推送。在Ruby中我必须这样做:toto||=[]toto.push('titi')可以一行完成吗?因为如果我有一个循环,它会测试“||=”,除了第一次:Person.all.eachdo|person|toto||=[]#with1billionofperson,thislineisuseless999999999times...toto.push(person.name)你有更好的解决方案吗?

随机推荐