配置介绍

本指南重点介绍CircleCI体验的核心内容-config.yml.在以下简单步骤中:

Circleci配置入门

本指南介绍CircleCI如何查找和运行config.yml.以及如何使用shell命令来执行任务,然后概述如何使用shell命令config.yml.可以与代码交互并启动构建,然后如何使用Docker容器恰好运行您需要的环境。最后,对工作流程进行了简短的探索,因此您可以学习协调您的构建,测试,安全扫描,批准步骤和部署。

circleci相信配置为代码.因此,从构建到部署的整个传递过程通过一个名为的单个文件进行策划config.yml..该config.yml.文件位于一个名为的文件夹中.circleci.在您的项目之上。circleci使用yaml语法for config,看看写作yaml.基础知识。

第一部分:你好,都是关于贝壳的

让我们开始吧。Circleci提供了强大的经验,因为我们为您提供了一个按需shell来运行您需要的任何东西。在第一个示例中,我们将向您展示设置的第一个构建并执行shell命令是多么容易。

  1. 如果您还没有,请继续使用Circleci注册并选择GitHub或Bitbucket。如果您愿意,您还可以通过Github Marketplace注册。
  2. 确保已添加要管理的项目。
  3. 添加A..circleci.您项目主站顶部的文件夹。如果您想在不同的分支上进行实验,您也可以这样做。确保文件夹以句点开始。此文件夹是特殊的,因此.CirCleci格式。
  4. 添加A.config.yml.在.circleci文件夹中的文件。
  5. 将以下内容添加到您的config.yml.文件。

         
1 2 3 4 5 6 7 8 9 10 11 12 13 14
版本:2.1工作:建立:Docker.:-形象:高山:3.7验证:用户名:mydockerhub用户密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-:名称:第一步命令:|回声'你好世界!'回声'这是送货管道'

检查配置并查看它运行。您可以在Circleci应用程序中看到作业的输出。

学习

CircleCI-config语法非常直接。最棘手的部分是典型的压痕。确保你的缩进是一致的。这是配置中最常见的错误。让我们详细回顾一下这九行

  • 第1行:这表示您正在使用的Circleci平台的版本。2.1是最新版本。
  • 第2-3行:工作level包含任意命名的子级的集合。建立是第一个被命名的孩子工作采集。在这种情况下建立也是唯一的工作。
  • 第6-7行:脚步集合是一个有序的列表指令。每个指令按照所声明的顺序执行。
  • 第8行:名称属性在返回警告,错误和输出时提供有用的组织信息。该名称作为构建过程中的一个操作,应该对您有意义
  • 第9-11行:这就是魔力。这个命令属性是表示所需工作的shell命令列表。初始管道,|,表示将有多行shell命令。这里第10行将打印出来你好,世界!在您的构建外壳和第11行将打印出来这是输送管道

第二部分:信息并准备建立

那很好,但让我们变得真实。交货图以代码开头。在此示例中,我们将添加几行将获取您的代码,然后列出它。我们还将在第二次运行中这样做。

  1. 如果您还没有,请通过第一个并添加简单.circleci / config.yml.文件到您的项目。

  2. CircleCI提供了许多简化的命令,您可以使用这些命令使复杂的交互变得非常容易。在这里我们要添加查看命令。此命令会自动获取分支代码,供您在后续步骤中使用。

  3. 现在,再加一秒钟步骤并做一个ls-铝要查看所有代码可用。


         
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
版本:2.1工作:建立:Docker.:-形象:高山:3.7验证:用户名:mydockerhub用户密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-查看-:名称:第一步命令:|回声'你好世界!'回声'这是送货管道'-:名称:代码已到达命令:|ls-铝回音“^^^^看起来应该很熟悉^^”

学习

虽然我们只对配置进行了两个小的更改,但这些代表了重要组织概念。

  • 第7行:查看command是一个内置保留字的示例,它将您的作业上下文化。在这种情况下,它会拉低你的代码,这样你就可以开始构建了。
  • 13-17号线:第二次运行建立工作列表(通过ls-铝)签出的内容。您的分支现在可以与进行交互。

第三部分:这很好,但我需要......

每个代码库和项目都是不同的。没关系。我们喜欢多样性。这是我们允许您在机器或docker容器中运行的原因之一。在本例中,我们将演示在节点可用的容器中运行。其他例子可能包括macOS机器、java容器甚至GPU。

  1. 本节展开了第一个和二部分。如果您还没有,请通过至少一部分以确保您有工作config.yml.在分支中的文件。

  2. 这是一个非常简单而且令人惊讶的强大的变化。我们将向构建作业添加对Docker Image的引用。


         
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 21 22 23 24 24 22
版本:2.1工作:建立:#预构建图像://www.drag240sx.com/docs/2.0/circleci -images/Docker.:-形象:圆环/节点:10个浏览器验证:用户名:mydockerhub用户密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-查看-:名称:第一步命令:|回声'你好世界!'回声'这是送货管道'-:名称:代码已到达命令:|ls-铝回音“^^^^看起来应该很熟悉^^”-:名称:在一个独特的容器中运行命令:|节点-v.

我们也增加了一个小块,它演示我们在节点容器中运行。

学习

上述配置的更改显着影响您完成工作的方式。By associating a docker container to a job and then dynamically running the job in the container, you don’t need to perform special magic or operational gymnastics to upgrade, experiment or tune the environment you run in. With a small change you can dramatically upgrade a mongo environment, grow or shrink the base image, or even change languages.

  • 第4行:在这里,我们在yml中查看一条评论。与任何其他单位的代码单位一样,评论是一个有用的工具,因为config会变得复杂。
  • 第5-6行:这些行表示用于该作业的Docker图像。因为您可以在CONFIG中拥有多个作业(如我们将看到下一个),所以您也可以在不同的环境中运行不同的配置部分。例如,您可以在瘦java容器中执行构建作业,然后使用预先安装浏览器的容器执行测试作业。在这种情况下,它使用了来自Circleci的预构建容器它已经内置了浏览器和其他有用的工具。
  • 第19-22行:这些行添加了一个运行步骤,返回容器中可用的节点的版本。尝试使用Circleci预构建的便利图像或甚至从Docker Hub的公共容器进行实验。

第四部分:批准开始

到现在为止,一直都还不错?让我们花点时间来编排一下。在本例中,我们将花费更多的时间进行分析,而不是逐步修改。CircleCI工作流模型是基于先前作业的编排。这就是为什么用于工作流定义的保留字是需要.乔布斯启动始终以成功完成事先工作的方式定义。例如,诸如[A,B,C]之类的作业向量将用作业B和C来实现,每个都需要该作业。作业A不会有需要阻止,因为它立即开始。例如,Job A立即开始;B需要一个;C需要B.

在下面的示例中,触发构建的事件将导致你好,世界立即开始。剩下的工作将等待。什么时候?你好,世界完成,两者我有代码运行与节点将开始。这是因为都是我有代码运行与节点要求你好,世界在他们开始之前成功完成。接下来,调用批准工作批准两者都会可用我有代码运行与节点完成。该批准工作与其他工作略有不同。它代表了手动干预,以允许工作流程继续。虽然工作流程正在等待用户(通过Circleci UI或API)来批准作业,但所有状态都基于原始触发事件保留。Circleci了解批准工作可能需要几个小时甚至几天 - 虽然我们建议多个日子。一旦批准通过人工干预完成最后的工作现在完成会跑的。

所有的作业名称都是任意的。这允许您创建所需的复杂工作流,同时对下一个阅读config.yml..


         
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 21 22 23 32 32 32 29 32 32 32 32 32 32 42 42 43 42 43 44 44 44 44 49 49 49 49 45 49 49 4051 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
版本:2.1工作:你好,世界:Docker.:-形象:高山:3.7验证:用户名:mydockerhub用户密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-:名称:你好,世界命令:|回声'你好世界!'回声'这是送货管道'我有代码:Docker.:-形象:高山:3.7验证:用户名:mydockerhub用户密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-查看-:名称:代码已到达命令:|ls-铝回音“^^^^看起来应该很熟悉^^”运行与节点:Docker.:-形象:圆环/节点:10个浏览器验证:用户名:mydockerhub用户密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-:名称:在带节点的容器中运行命令:|节点-v.现在完成:Docker.:-形象:高山:3.7验证:用户名:mydockerhub用户密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-:名称:批准完成命令:|echo'一旦批准完成,就会工作'工作流程:版本:2example_workflow.:工作:-你好,世界-我有代码:需要:-你好,世界-运行与节点:需要:-你好,世界-批准:类型:批准需要:-运行与节点-我有代码-现在完成:需要:-批准

学习

我们现在知道如何创建一个工作流程,包括手动门,您可以用于保护昂贵的互动。

  • 第3行:回声的命令你好,世界!已成为一个完整的成熟的工作,名字你好世界
  • 第12行:获取代码的命令现在位于名为我有代码
  • 第22行:现在调用使用circleci预构建图像的节点示例运行与节点
  • 第30行:有一个附加的作业,其操作类似于你好,世界但它不会在批准完成之前运行 - 请参阅工作流节斯坦扎的第57行。
  • 第39-57行:配置现在有了一个工作流。在前面的示例中,CircleCI引擎将配置解释为只有一个作业工作流。在这里,我们要保持清晰,并详细说明我们要执行的工作流程。此工作流演示了几个有用的功能。这个需要声明代表了事先工作的列表,该列表必须在问题开始前成功完成。在这个例子中,两者都是我有代码运行与节点必须在之前完成批准变得活跃。此外,两者都是我有代码运行与节点依赖你好,世界但不是彼此。这意味着这两个作业将在你好,世界是完整的。如果您有多个作业彼此不直接依赖,并且希望改进挂钟时间,则此功能非常有用。
  • 第50-51行:大多数作业都是通用的。但是,这项工作有一种类型。在这种情况下,该类型是批准并要求一个人通过Circleci API或UI来拍摄努力完成。交错批准作业允许您在执行下游作业之前必须批准或管理的栅栏。

上述示例旨在为通过Circleci配置提供的功能的快速启动器提供快速启动器。仍有更多更多。看看其余的文档。您会发现,预定的作业,工作区,工件以及您在这里学到的概念的所有简单变化。现在起来,自动化你的CI / CD世界!

另请参见

配置电路