Concepts

This guide introduces some basic concepts to help you understand how CircleCI manages your CICD pipelines.

项目

Circleci项目共享VCS(GitHub或Bitbucket)中关联的代码存储库的名称。从Circleci应用程序中选择添加项目以进入项目仪表板,从您可以设置和遵循您可以访问的项目。

On the Projects Dashboard, you can either:

  • 设定您是VCS中的所有者的项目
  • Follow您组织中的任何项目都可以访问其管道并订阅电子邮件通知for the project’s status.

header“></p>
      <h2 id=Configuration

Circleci.believes inconfiguration as code。Your entire continuous integration and deployment process is orchestrated through a single file calledconfig.yml。该config.yml文件位于一个名为的文件夹中。Circleci.在您的项目根部。circleci使用yaml语法for config,看看写作yaml.基础知识。

├──.circleci│── -  config.yml├──自述└──全部 - 项目文件和文件夹

config.yml是一个功能强大的yaml文件,它定义了项目的整个流水线。有关使用的各种键的完整概述,请参阅配置参考

Your CircleCI configuration can be adapted to fit many different needs of your project. The following terms, sorted in order of granularity and dependence, describe the components of most common CircleCI projects:

  • 管道:代表完整的配置。仅在Circleci云中使用。
  • 工作流程:负责协调多个职位
  • 职位:Responsible for running a series ofsteps执行命令。
  • 脚步:运行命令(例如安装依赖项或运行测试)和shell脚本以执行项目所需的工作。

以下图像使用example Java applicationto show the various config elements:

配置元素“></p>
      <h2 id=用户类型

值得一分钟才能定义与Circleci项目相关的各种用户类型,其中大多数具有从VCS帐户继承的权限。

  • Organization Administrator是从VCS继承的权限级别:
    • GitHub.:Owner并在Circleci上至少一个项目建筑之后
    • bitbucket:管理员并在Circleci上至少一个项目建筑之后
  • 项目管理员is the user who adds a GitHub or Bitbucket repository to CircleCI as a Project.
  • 一种用户是组织内的单个用户,从VCS继承。
  • Circleci用户是任何可以使用用户名和密码登录Circleci平台的人。用户必须添加到agithub或bitbucket org查看或遵循相关的Circleci项目。用户可能不会查看存储在环境变量中的项目数据。

管道s

Circleci管道是您在项目上触发工作时运行的完整流程。管道包含您的工作流程,反过来协调您的工作。这都在您的项目中定义配置文件。管道s are not currently available for CircleCI Server.

管道代表与您的配置进行交互的方法:

  • 使用新的API端点trigger a pipeline
  • Use pipeline parameters to triggerconditional workflows
  • 进入版本2.1配置,提供:
    • 可重复使用的配置元素,包括executors,命令和作业。
    • 打包可重用配置,已知为orbs
    • 改进了配置验证错误消息。
    • Option to enable auto-cancel, within一种dvanced Settings那to abort workflows when new builds are triggered on non-default branches.

注意,重要的是要仔细考虑启用自动取消功能的影响,例如,如果您在非默认分支上配置了自动部署作业。

有关管道的更多详细信息以及如何在工作流程和作业中使用它们的属性,请参阅以下指南:

Orbs

ORB是可重复使用的代码片段,可帮助自动化重复的进程,加快项目设置,并使其易于与第三方工具集成。看到使用ORBS.for details about how to use orbs in your config and an introduction to orb design. Visit theOrbs Registry搜索ORB以帮助简化配置。ORB目前不适用于Circleci服务器。

上面的图形可以使用ORBS大大简化了示例Java配置的图形。下图重新创建了相同的配置the Maven orb

配置元素ORBS.“></p>
      <h2 id=职位

作业是您配置的构建块。工作是集合的steps,根据需要运行命令/脚本。每个作业必须声明一个executorDocker.machine视窗ormacosmachine包括A.默认映像if not specified, forDocker.你必须指定图像to use for the primary container, formacos您必须指定一个Xcode版本,而对于视窗你必须使用Windows orb

工作例证“></p>
      <h2 id=执行者和图像

配置中定义的每个单独的作业将在唯一的executor中运行。执行器可以是Docker容器或运行Linux,Windows或MacOS的虚拟机。注意,麦斯科座目前无法在自托管安装的Circleci服务器上使用。

工作例证“></p>
      <p>You can define an image for each executor. An image is a packaged system that has the instructions for creating a running container or virtual machine. CircleCI provide a range of images for use with the Docker executor. For more information see the<a href=Pre-Built CircleCI Docker Images指南。

2。1职位build1.#作业名称Docker.#指定主容器图像,-图片buildpack-deps:可靠auth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Postgres:9.4.1.# Specifies the database imageauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考# for the secondary or service container run in a common#wentrow在主容器上暴露的端口#localhost可用。环境# Specifies the POSTGRES_USER authentication#环境变量,请参阅www.drag240sx.com/docs/2.0/env-vars/# variabl请示使用环境es.POSTGRES_USER#...建立2machine#指定使用的计算机映像# an Ubuntu version 20.04 image with Docker 19.03.13#和docker-compose 1.27.4,关注Circleci讨论公告#用于新图像版本。图片Ubuntu-2004:202010-01#...建立3macos#指定具有Xcode版本11.3的MacOS虚拟机Xcode.11.3.0“#...
2。0.职位build1.#作业名称Docker.#指定主容器图像,-图片buildpack-deps:可靠auth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Postgres:9.4.1.# Specifies the database imageauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考# for the secondary or service container run in a common#wentrow在主容器上暴露的端口#localhost可用。环境# Specifies the POSTGRES_USER authentication#环境变量,请参阅www.drag240sx.com/docs/2.0/env-vars/# variabl请示使用环境es.POSTGRES_USER#...建立2machine#指定使用的计算机映像#ubuntu版本14.04带Docker 17.06.1-CE的图像#和docker-compose 1.14.0,关注Circleci讨论公告#用于新图像版本。图片Ubuntu-1604:201903-01#...建立3macos#指定具有Xcode版本11.3的MacOS虚拟机Xcode.11.3.0“#...

主容器由列出的第一图像定义。Circleci./config.yml文件。这是执行命令的位置。Docker Executor用Docker图像旋转一个容器。机器执行器旋转完整的Ubuntu虚拟机图像。看到Choosing an Executor Type用于比较表和注意事项的文档。可以添加后续图像以旋转辅助/服务容器。

When using the docker executor and running docker commands, thesetup_remote_docker.键can be used to spin up another docker container in which to run these commands, for added security. For more information see theRunning Docker Commands指南。

脚步

脚步are actions that need to be taken to complete your job. Steps are usually a collection of executable commands. For example, the查看一步,这是一个内置所有Circleci项目中可用的步骤,请在SSH中查看作业的源代码。然后,这步骤允许您运行自定义命令,例如执行命令制作测试using a non-login shell by default. Commands can also be definedoutside the job declaration,使它们在整个配置中重复使用。

#...职位建立Docker.-图片auth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-查看# Special step to checkout your source code-# Run step to execute commands, see#www.drag240sx.com/docs/2.0/configuration-Reference/#Run.名称运行测试命令制作测试#可执行命令运行#使用/ bin / bash -eo pipefail选项的非登录shell# 默认。#...

图片

图像是一个打包系统,具有用于创建运行容器的说明。主容器由列出的第一图像定义。Circleci./config.yml文件。这是使用Docker或机器执行程序执行命令的命令。Docker Executor用Docker图像旋转一个容器。机器执行器旋转完整的Ubuntu虚拟机图像。看看Choosing an Executor Type用于比较表和注意事项的文档。

2职位build1.#作业名称Docker.#指定主容器图像,# see www.drag240sx.com/docs/2.0/circleci-images/ for#dockerhub上的预构建Circleci图像列表。-图片buildpack-deps:可靠auth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Postgres:9.4.1.# Specifies the database imageauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考# for the secondary or service container run in a common#wentrow在主容器上暴露的端口#localhost可用。环境# Specifies the POSTGRES_USER authentication#环境变量,请参阅www.drag240sx.com/docs/2.0/env-vars/# variabl请示使用环境es.POSTGRES_USER......建立2machine#指定使用的计算机映像# an Ubuntu version 16.04 image#关注Circleci讨论公告#用于新图像版本。图片Ubuntu-1604:202007-01......建立3macos#指定具有Xcode版本9.0的MacOS虚拟机Xcode.9.0“......

工作流程

工作流定义作业列表及其运行订单。使用批准作业,可以同时运行作业,按计划或使用手动门运行作业。

工作流例证“></p>
      <p class=工作流例证“></p>
      <p>以下配置示例显示了一个调用的工作流程<code class=建立_and_testin which the jobbuild1.跑步然后工作建立2and建立3跑concurrently:

2。1职位build1.Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-查看-save_cache.#使用缓存键缓存依赖项v1-repo  -  {{.environment.circle_sha1}}path-~/circleci-demo-workflows建立2Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-restore_cache.#恢复缓存的依赖项。v1-repo  -  {{.environment.circle_sha1}}-名称运行测试命令制作测试建立3Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-restore_cache.#恢复缓存的依赖项。v1-repo  -  {{.environment.circle_sha1}}-名称预编译资产命令Bundle Exec Rake资产:预编译#...workflows建立_and_test# name of your workflow职位-build1.-建立2需要-build1.#等待Build1作业在开始之前成功完成#查看www.drag240sx.com/docs/2.0 / workflows/有关更多示例。-建立3需要-build1.#等待Build1作业在开始之前成功完成#同时运行build2和build3以节省时间。
2职位build1.Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-查看-save_cache.#使用缓存键缓存依赖项v1-repo  -  {{.environment.circle_sha1}}path-~/circleci-demo-workflows建立2Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-restore_cache.#恢复缓存的依赖项。v1-repo  -  {{.environment.circle_sha1}}-名称运行测试命令制作测试建立3Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-restore_cache.#恢复缓存的依赖项。v1-repo  -  {{.environment.circle_sha1}}-名称预编译资产命令Bundle Exec Rake资产:预编译#...workflows2建立_and_test# name of your workflow职位-build1.-建立2需要-build1.#等待Build1作业在开始之前成功完成#查看www.drag240sx.com/docs/2.0 / workflows/有关更多示例。-建立3需要-build1.#等待Build1作业在开始之前成功完成#同时运行build2和build3以节省时间。

缓存,工作区和工件

工作流例证“></p>
      <p>缓存存储文件或目录,例如对象存储中的依赖关系或源代码。每个作业可能包含从以前作业缓存依赖性以加速构建的特殊步骤。</p>
      <div class=

2。1职位build1.Docker.#每项工作都需要指定executor# (either docker, macos, or machine), see#www.drag240sx.com/docs/2.0/executor-types/进行比较#更多的例子。-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-查看-save_cache.#使用缓存键缓存依赖项#环境变量的模板,#查看www.drag240sx.com/docs/2.0/caching/v1-repo  -  {{.environment.circle_sha1}}path-~/circleci-demo-workflows建立2Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-restore_cache.#恢复缓存的依赖项。v1-repo  -  {{.environment.circle_sha1}}
2职位build1.Docker.#每项工作都需要指定executor# (either docker, macos, or machine), see#www.drag240sx.com/docs/2.0/executor-types/进行比较#更多的例子。-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-查看-save_cache.#使用缓存键缓存依赖项#环境变量的模板,#查看www.drag240sx.com/docs/2.0/caching/v1-repo  -  {{.environment.circle_sha1}}path-~/circleci-demo-workflows建立2Docker.-图片Circleci / Ruby:2.4-nodeauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考-图片Circleci./postgres:9.4.12-alpineauth用户名mydockerhub-user.password$ dockerhub_password.#上下文/项目UI ENV-VAR参考steps-restore_cache.#恢复缓存的依赖项。v1-repo  -  {{.environment.circle_sha1}}

Workspaces are a workflow-aware storage mechanism. A workspace stores data unique to the job, which may be needed in downstream jobs. Each workflow has a temporary workspace associated with it. The workspace can be used to pass along unique data built during a job to other jobs in the same workflow.

伪影persist data after a workflow is completed and may be used for longer-term storage of the outputs of your build process.

2。1职位build1.#...steps-persist_to_workspace.#持续指定的路径(工作区/回声输出)# into the workspace for use in downstream job. Must be an absolute path,来自Working_Directory的#或相对路径。这是容器上的目录# taken to be the root directory of the workspace.工作区#必须是root的相对路径path-回声输出建立2#...steps-Attach_Workspace.#必须是Working_Directory的绝对路径或相对路径/ tmp / workspace建立3#...steps-Store_Arifacts.#查看www.drag240sx.com/docs/2.0/artifacts/更多详细信息。路径/ TMP / ARIFACT-1目的地伪影档案#...
2职位build1.#...steps-persist_to_workspace.#持续指定的路径(工作区/回声输出)# into the workspace for use in downstream job. Must be an absolute path,来自Working_Directory的#或相对路径。这是容器上的目录# taken to be the root directory of the workspace.工作区#必须是root的相对路径path-回声输出建立2#...steps-Attach_Workspace.#必须是Working_Directory的绝对路径或相对路径/ tmp / workspace建立3#...steps-Store_Arifacts.#查看www.drag240sx.com/docs/2.0/artifacts/更多详细信息。路径/ TMP / ARIFACT-1目的地伪影档案#...

注意工件,工作区和缓存之间的以下区别:

类型 一生 Use
伪影 几个月 Preserve long-term artifacts. 可在“工件”选项卡中使用Job pageunder theTMP / Circle-Artifacts。<哈希> /容器or similar directory.
Workspaces 工作流程的持续时间 将工作区连接在下游容器中Attach_Workspace.:步。 Attach_Workspace.copies and re-creates the entire workspace content when it runs.
c 几个月 存储可能帮助工作更快运行的非重要数据,例如NPM或GEM包。 save_cache.工作步骤路径to a list of directories to add and a唯一标识缓存(例如,分支,构建号或修订)。用恢复缓存restore_cache.和适当的

Refer to the持久数据流中的数据:何时使用缓存,工件和工作空间有关使用工作空间,缓存和工件的其他概念信息。

也可以看看

Refer to the工作和步骤文档摘要如何使用职位andsteps键s and options.