使用上下文

上下文为跨项目保护和共享环境变量提供了一种机制。环境变量被定义为名称/值对,并在运行时注入。本文档将在下面的章节中描述在CircleCI中创建和使用上下文:

概观

在CircleCI应用程序的组织设置页面上创建和管理上下文。您必须是组织成员才能查看、创建或编辑上下文。创建上下文后,可以使用上下文在项目的工作流部分键入关键字config.yml文件以得到任何作业(多个)访问与上下文相关联的环境变量,如下图所示在图像中。

上下文概述“></p>
      <p class=上下文概述“></p>
      <p>要使用上下文页面上设置环境变量,运行工作流程的人必须是该上下文设置该组织的成员。</p>
      <p>上下文名称必须为每个GitHub上或组织到位桶独特。<strong>注意:</strong>使用初始默认名称创建的上下文<code class=组织全局将继续工作。

上下文命名为CircleCI服务器

对于任何企业的GitHub(G金宝博娱乐官网网址HE)安装包含多个组织,跨越这些组织的关系名称必须是唯一的。例如,如果你的GHE名为猕猴桃和包括两个组织,你不能添加一个名为上下文部署这两个组织。那就是部署上下文名称不能存在于同一GHE安装了猕猴桃帐户的两个单位部门进行复制。一个帐户内复制上下文将失败,出现错误。

重命名组织和存储库

如果你发现你需要重命名一个组织或回购您以前迷上了CircleCI,最好的做法是请按照下列步骤操作:

  1. 重命名组织/回购的VCS。
  2. 例如,转到CircleCI应用程序,使用新的org/repo名称,app.www.drag240sx.com/pipelines/ / <新组织名称> / <项目名称>
  3. 确认你的计划,项目和设置已被成功转移。
  4. 然后,如果需要的话,您可以使用VCS中以前使用的名称自由地创建一个新的org/repo。

    注意:如果你不遵循这些步骤,这是可能的,你可能无法访问您的单位或回购的设置,包括环境变量上下文

创建和使用上下文

  1. 通过点击侧边栏的链接使用CircleCI应用,导航到组织设置页面的新版本。

    注意:组织成员可以创建一个上下文,但只有组织管理员可以用安全组限制它。一个例外,这种情况下是到位桶组织,这需要用户有创建存储库工作区的权限,无论在工作区或其所包含的资料库的其他权限。

    上下文“></p><p><strong>注意</strong>:如果您使用的CircleCI服务器,组织设置仍然可以正常使用访问<strong>设置</strong>链接主导航。</p></li>
       <li><p>点击创建按钮背景和您的上下文添加一个唯一的名称。您单击对话框中的创建上下文按钮后,出现语境与安全组到列表<code class=所有成员表明,任何人在您的组织可以在运行时访问此语境。

  2. 点击添加环境变量按钮并输入变量的名称和值要与关联此背景下。单击添加变量按钮保存。

  3. 添加上下文关键工作流第您config.yml文件中要使用变量每一项工作。在下面的例子中,运行试验属性中设置的变量组织全局上下文。CircleCI云用户可以在这个例子中指定多个上下文,所以运行试验也可以访问上下文中设置的变量我的上下文

2.1工作流我的工作流程职位-运行试验上下文-组织全局-我的上下文职位运行试验搬运工人-图片CIMG /碱:2020.01身份验证用户名mydockerhub用户密码$ DOCKERHUB_PASSWORD#背景/项目UI ENV-VAR参考步骤-查看-名称回声环境变量组织全局语境”命令回声$ MY_ENV_VAR
2.1工作流我的工作流程职位-运行试验上下文组织全局职位运行试验搬运工人-图片CIMG /碱:2020.01身份验证用户名mydockerhub用户密码$ DOCKERHUB_PASSWORD#背景/项目UI ENV-VAR参考步骤-查看-名称回声环境变量组织全局语境”命令回声$ MY_ENV_VAR

移动使用情境的信息库

如果你移动你的资料库,以一个新的组织,你还必须在新的组织唯一的名称设置上下文。

结合上下文

您可以通过只是将它们添加到上下文列表将几个上下文的一个作业。上下文是为了应用,所以在重叠的情况下,后来的上下文覆盖前面的。这样,您就可以范围上下文是小粒状只要你喜欢。

限制一个Context

CircleCI,可以通过添加安全组上下文限制在运行时秘密的环境变量。只有组织管理员可以添加安全组到一个新的或现有的上下文。安全组由GitHub团队定义。如果在LDAP身份验证中使用CircleCI服务器,那么LDAP组还定义安全组。在将安全组添加到上下文之后,只有该安全组的成员(同时也是CircleCI用户)才能访问该上下文并使用相关的环境变量。

组织管理员已阅读所有的项目/写访问,并有所有上下文不受限制的访问。

默认安全组是所有成员并允许使用CircleCI的组织中的任何成员使用上下文。

注意:Bitbucket都存储库做提供了一个API,允许CircleCI环境受到限制,只有GitHub的项目包括限制与安全组上下文的能力。

在受限制的上下文中运行工作流

要调用使用受限制的情况下工作,用户必须是上下文的一个安全组的成员,必须注册CircleCI。如果运行工作流的用户不能访问的情况下,工作流将失败,擅自状态。

将上下文限制为一个或多个安全组

您必须是组织管理员才能完成以下任务。

  1. 导航到组织的设置>应用CircleCI上下文页。出现上下文列表。默认安全组是所有成员并允许在组织的所有用户调用的工作与环境。
  2. 点击创建按钮背景下,如果你想使用一个新的环境,或者单击现有上下文的名称。
  3. 点击添加安全组按钮,查看对话框。
  4. 选择GitHub的团队或LDAP组添加到上下文,然后单击添加按钮。上下文的使用目前仅限于选定的组。
  5. 单击添加环境变量的环境变量添加到上下文,如果不存在,然后单击添加按钮。对于这种情况下的环境变量的使用目前仅限于安全组的成员。
  6. 导航到组织的设置>应用CircleCI上下文。安全组出现在安全栏的上下文。

现在,只有所选组的成员可以在其工作流中使用上下文,或者为上下文添加或删除环境变量。

在更改上下文限制

由于缓存,对上下文的安全组限制的更改可能不会立即生效。为了确保立即应用设置,Org管理员的最佳实践是在做出更改后刷新权限。的刷新权限按钮上可以找到账户集成页。

CircleCI服务器安装的管理员可以找到刷新权限按钮 /帐户

批准乔布斯在使用受限制的上下文

添加一个审批工作到就可以对需要使用受限制的情况下的人工审批选项。要限制的是从批准作业下游作业运行中,添加限制上下文那些下游作业中,如图下面的例子:

2.1不显示#就业岗位的构建,测试和部署声明工作流职位编译 - 测试 - 部署-建立-保持类型赞同在UI#礼物手动批准按钮要求-建立-测试上下文我的限制上下文要求-建立-保持-部署上下文部署密钥值限制范围内要求-建立-保持-测试

在本例中,是作业测试部署受到限制,并且将只运行在用户谁批准保持作业是分配给上下文的安全组的成员部署密钥值限制范围内。当工作流编译 - 测试 - 部署运行,建立作业将运行,然后保持作业时,呈现在CircleCI应用人工审批按钮。该批准作业可能通过批准任何员,但工作测试部署会失败未经授权的如果“审批”不受限的情况下安全组的一部分。

从上下文删除组

若要使上下文仅对组织的管理员可用,可以删除与该上下文关联的所有组。所有其他用户将失去对该上下文的访问权。

从团队和组中添加和删除用户

CircleCI同步GitHub的团队和LDAP组每隔几个小时。如果用户添加或从GitHub的团队或LDAP组中除去,它会占用几个小时来更新CircleCI记录和删除访问的上下文。

从受限上下文添加和删除环境变量

从受限制的上下文添加和删除环境变量仅限于上下文组的成员。

删除上下文

如果上下文被其他组限制所有成员,你必须是安全组的成员才能完成此任务:

  1. 作为组织管理员,导航到CircleCI应用程序中的组织设置>上下文页面。

  2. 点击删除按钮背景下为您要删除的语境。出现一个确认对话框。

  3. 按Delete键,然后点击确认。语境及所有相关的环境变量都将被删除。注意:如果工作流中的作业正在使用上下文,则该作业将开始失败并显示错误。

环境变量用法

环境变量按照特定的优先顺序使用,如下所示:

  1. 环境变量声明外壳命令内在一个一步,例如FOO =酒吧make install的
  2. 方法声明的环境变量环境关键为一个
  3. 环境变量设置与环境关键找工作
  4. 方法中定义的特殊循环eci环境变量CircleCI内置环境变量本文档的部分。
  5. 上下文环境变量(假设用户能够访问上下文)。
  6. 项目级的环境变量项目设置页面上设置。

在shell命令中声明的环境变量跑一步, 例如FOO =酒吧make install的,将覆盖环境变量与声明环境上下文钥匙。在上下文页面上添加的环境变量将优先于在项目设置页面上添加的变量。

秘密掩盖

秘密屏蔽目前在CircleCI服务器的自托管安装上不可用

上下文保存为应用程序执行关键功能的项目秘密或密钥。对于添加的安全性,CircleCI在构建输出上执行秘密屏蔽,模糊回声打印上下文的输出。

上下文的值不会生成输出,如果被屏蔽:

  • 的上下文的值小于4个字符
  • 上下文的值等于真正的真正的

注意:秘密掩盖只会防止出现在构建输出上下文的值。上下文的价值仍然是用户访问调试建立与SSH

也可以看看