Windows上的Hello World

本文档描述了如何开始进行持续集成Windows构建环境CircleCI。如果这是您第一次设置CircleCI,我们建议您查看一下入门指南

先决条件

为了跟随本文件,您将需要:

  • 一个账户CircleCI。
  • 免费计划(默认)或免费计划绩效计划。如果您正在运行CircleCI服务器,下面还有其他代码示例。
  • 对于云版本,管道必须是启用让您的项目使用Windows。

Windows executor概述

Windows构建环境(或遗嘱执行人)为用户提供构建Windows项目的工具,例如通用Windows平台(UWP)应用程序,.NET可执行文件或特定于Windows特定于.NET Framework)项目。以下规范详细说明了Windows Executor的容量和包含功能:

  • 基于vm,以确保完全的作业隔离。
  • 使用Windows Server 2019数据中心版本的服务器核心版本。
  • 有4个vcpu和15 GB RAM。
  • Powershell是默认的shell(可以手动选择Bash和cmd)。
  • Docker Engine - 金宝博娱乐官网网址Enterprise可用于运行Windows容器。

注意:Windows执行器不支持码头工人层缓存

注意:Windows执行器目前只支持Windows容器。目前还不可能在Windows上运行Linux容器。

Windows执行人图片

目前CircleCI支持单个Windows映像:Windows Server 2019和Visual Studio 2019。请参阅图片的全部内容已安装软件列表进一步在本文档中。有关Circleci Server Windows映像中包含的内容的详细信息,请与系统管理员联系。

请注意,可以像这样在Windows执行器上运行Windows Docker容器:

版本:2.1球体:赢得:circleci/windows@2.2.0工作:构建:遗嘱执行人:名称:赢/违约壳牌:powershell.exe脚步:-查看-:系统信息-:名称:检查码头工人”壳牌:powershell.exe命令:|码头工人信息码头工人运行hello world: nanoserver - 1809

已知的问题

这些是我们知道的Windows Executor的问题,我们会尽快解决:

  • 通过SSH连接到Windows作业,并使用bashshell会导致一个空的终端提示符。
  • 目前还不可能实现嵌套虚拟化(例如,使用——linux平台旗)。

示例配置文件

使用以下配置片段开始在CircleCI上使用Windows,您可以将其粘贴到您的.circleci / config.yml文件:

版本:2.1#使用版本2.1启用orb使用。球体:赢得:circleci/windows@2.2.0# Windows orb为您提供了开始使用Windows执行器所需的一切。工作:构建:你的工作名称遗嘱执行人:名称:赢/违约#执行器类型大小:媒介”资源类,可以是"medium", "large", "xlarge", "2xlarge",如果未指定,默认为"medium"脚步:#命令在Windows虚拟机环境中运行-查看-:Write-Host‘您好,Windows的
版本:2工作:构建:你的工作名称:图像:Windows默认# Windows机器映像resource_class:windows.medium脚步:#命令在Windows虚拟机环境中运行-查看-:Write-Host‘您好,Windows的

在这里,我们将使用版本2.1语法来讨论如何使用Windows executor,但是如果您使用Server,您可以遵循上面描述的executor定义语法。

使用Windows执行器指定Shell

有三个外壳,你可以使用在Windows上运行作业步骤:

  • PowerShell(Windows ORB中的默认值)
  • 抨击
  • 命令

您可以在作业级别或步骤级别配置shell。可以在同一个作业中使用多个shell。考虑下面的示例,其中我们使用Bash、Powershell和Command,通过添加一个贝壳:参数我们工作一步声明:

版本:2.1 ORBS:WIN:CIRCLECI/WINDOWS@2.2.0作业:构建:executor:name:win / default步骤:#默认shell是powershell  - 运行:命令:$(echo hello | Out-host; $?) -和$(回声世界| Out-host; $?)shell:powershell.exe  -  run:command:echo hello && echo world shell:bash.exe  - 运行:命令:echo hello&echo world shell:cmd.exe

请注意也可以安装更新或其他Windows Shell-Tooling;例如,您可以使用最新版本的PowerShell核心安装dotnetcli,并在作业的后续步骤中使用它:

版本:2.1 ORBS:WIN:CIRCLECI/WINDOWS@2.2.0作业:构建:执行程序:赢/默认步骤: -  CHECHOUT  -  RUN:DOTNET工具安装 -  GLOBAL POWERSHELL  - 运行:PWSH ./< MY-Script>.PS1

示例应用程序

让我们考虑使用Windows Executor更高级(但仍然介绍)的“Hello World”应用程序。这个示例应用程序仍然将“Hello World”打印到控制台,但是使用.NET核心创建一个可执行文件,使用依赖性缓存,并在每个构建中创建工件。

您可以查看整个配置在这里

版本:2.1

在上面,我们首先声明我们将使用version2.1使我们可以进入绿色原子管道

球体:赢得:circleci/windows@2.2.0

接下来,我们声明我们将在我们的构建中使用的轨道。我们只会使用windows orb帮助我们开始。

工作:构建:遗嘱执行人:名称:赢/违约壳牌:powershell.exe

工作键,我们通过使用的orb设置执行器。我们还可以声明默认的shell,以便在配置的后续步骤中应用。默认的shell是Powershell.exe

脚步:-查看

在第一步中,运行查看命令从版本控制系统中提取源代码。

-restore_cache:钥匙:-:名称:安装项目依赖性“命令:dotnet.exe恢复-save_cache:path:-C:\用户\ circleci \ .nuget \ packages

接下来在配置中,我们使用缓存来恢复从以前的构建中的缓存依赖项。命令dotnet恢复将获取从缓存中尚未安装/还原的任何依赖项。了解更多有关缓存的更多信息缓存文件

-:名称:建立一步”命令:发布-r win10-x64-:名称:测试可执行的“命令:。\ bin \释放\ netcoreapp2.1 \ win10-x64 \ publish \ circleci-demo-windows.exe

接下来,我们运行两个步骤:一个是为Windows 10构建可执行文件,另一个是测试可执行文件(期望看到“Hello World”打印到控制台)。

-store_artifacts:路径:。\ bin \释放\ netcoreapp2.1 \ win10-x64 \ publish \ circleci-demo-windows.exe

在最后一步中,我们将构建可执行文件存储为工件,使其可以通过CircleCI web应用程序或API访问。

SSH到您的构建

可以将其SSH放入Windows构建容器中。这对于在管道中进行故障排除问题非常有用。请按照以下步骤进行SSH进入Windows容器:

步骤

  1. 确保您已经向您的GitHub要么Bitbucket.帐户。

  2. 要启动启用SSH的作业,请从“Rerun Workflow”下拉菜单中选择“使用SSH重新运行作业”选项。

  3. 要查看连接的详细信息,展开作业输出中的“Enable SSH”部分,您将看到连接所需的SSH命令:SSH连接详细信息”></p></li>
      </ol>
      <p>确保在ssh进入时传递想要运行的shell的名称。运行<code class=用于cmd . exe在上面的构建中,您将运行:ssh -p - cmd.exe

    可供选择的选项有:

    • powershell.exe
    • Bash.exe.
    • 用于cmd . exe

    您可以在构建中使用SSH了解更多信息在这里

    下一个步骤

    此外,考虑在一些Circleci的功能上阅读文档:

    • 看到概念关于2.0配置的摘要和.circleci/config中顶级键的层次结构的文档。yml文件。
    • 参考工作流记录使用并发、顺序、计划和手动审批工作流编排作业运行的示例。
    • 找到所有键和预构建Docker图像的完整参考信息配置CircleCICircleci图像文档,分别。

    软件预装在Windows映像中

    Windows Server 2019与Visual Studio 2019

    • Windows Server 2019核心数据中心版本
    • Visual Studio 2019社区版
      • 在Circleci上使用此版本的Visual Studio时,额外的许可术语可能适用于您的组织。请审查这一点Visual Studio 2019社区版许可条款在Windows作业中使用此Visual Studio版本之前。
      • 用于Visual Studio 2019的Azure SDK
      • Visual Studio 2019构建工具
    • 贝壳:
      • PowerShell 5.
      • GNU bash 4.4.231 (x86_64-pc-msys)
      • cmd
    • .NET Framework 4.8.
    • net核心
      • SDK 3.0.100-Preview7-012821
      • 运行时3.0.0-preview6-27804-01
      • SDK 2.2.401.
      • 2.2.6运行时。
      • SDK 2.1.801.
    • Git 2.22.0
    • git lfs 2.7.2
    • Windows SDK 10
      • 10.0.26624
      • 10.1.18362.1
    • Docker引擎-企业版18.0金宝博娱乐官网网址9.7
    • NuGet CLI 5.2.0.6090
    • 巧克力色v0.10.15
    • Azure服务面料
      • SDK 3.3.617.9590
      • 运行时6.4.617.9590
    • OpenJDK 12.0.2
    • node . js v12.8.0
    • NVM(节点版本管理器)
    • Ruby 2.6.3.
    • 去1.12.7.
    • Python 3.7.3
    • Miniconda 3
    • 文本编辑器
      • 纳米2.5.3
      • Vim 8.0.604
    • 金桥1.5