Windows上的Hello World
本文档描述了如何开始进行持续集成Windows构建环境CircleCI。如果这是您第一次设置CircleCI,我们建议您查看一下入门指南。
先决条件
为了跟随本文件,您将需要:
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作业,并使用
bash
shell会导致一个空的终端提示符。 - 目前还不可能实现嵌套虚拟化(例如,使用
——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核心安装dotnet
cli,并在作业的后续步骤中使用它:
版本: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容器:
步骤
确保您已经向您的GitHub要么Bitbucket.帐户。
要启动启用SSH的作业,请从“Rerun Workflow”下拉菜单中选择“使用SSH重新运行作业”选项。
要查看连接的详细信息,展开作业输出中的“Enable SSH”部分,您将看到连接所需的SSH命令:
用于cmd . exe在上面的构建中,您将运行:
ssh -p
- cmd.exe 可供选择的选项有:
- powershell.exe
- Bash.exe.
- 用于cmd . exe
您可以在构建中使用SSH了解更多信息在这里。
下一个步骤
此外,考虑在一些Circleci的功能上阅读文档:
- 看到概念关于2.0配置的摘要和.circleci/config中顶级键的层次结构的文档。yml文件。
- 参考工作流记录使用并发、顺序、计划和手动审批工作流编排作业运行的示例。
- 找到所有键和预构建Docker图像的完整参考信息配置CircleCI和Circleci图像文档,分别。
软件预装在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