本文共 4389 字,大约阅读时间需要 14 分钟。
目录
EasyCI是一个被认为可以使连续集成易于使用的程序
介绍
持续集成是每个开发人员都有兴趣拥有的东西,但它并不容易获得,个性化和维护。
EasyCI是一个程序,被认为使连续集成易于使用,并允许它的可扩展性和可维护性。在下面的内容中,我将尝试解释如何使用免费工具轻松获得无成本的CI解决方案。
EasyCI入门
作为开发环境,可以使用Visual Studio 2017“社区版”
它可以从下载。(你也可以破解版,你懂的~~)
微软保留商业用途最多5个开发者:
组织许可。如果您是某个组织,您的用户可以按如下方式使用该软件:
- 您的任何数量的用户都可以使用该软件开发和测试在开源倡议(OSI)批准的开源软件许可下发布的应用程序。
- 您的任何数量的用户都可以使用该软件来开发和测试Visual Studio的扩展。
- 您的任何数量的用户都可以使用该软件来开发和测试Windows操作系统的设备驱动程序。
- 您的任何数量的用户都可以使用该软件开发和测试您的应用程序,作为在线或面对面的课堂培训和教育,或进行学术研究的一部分。
- 如果以上都不适用,并且您也不是企业(定义如下),那么最多5个人用户可以同时使用该软件来开发和测试您的应用程序。
免费使用30天后,可以使用Microsoft Live帐户永久激活它。
如何准备开发环境
- 安装新的Windows(7或更高版本的计算机)或使用现有的计算机。
![https://www.codeproject.com/KB/mentor/1273315/01_InstallingWindows.png](https://www.codeproject.com/KB/mentor/1273315/01_InstallingWindows.png)
- Downoad Visual Studio社区版(从)。
![https://www.codeproject.com/KB/mentor/1273315/02_Download_VS2017.png](https://www.codeproject.com/KB/mentor/1273315/02_Download_VS2017.png)
- 启动安装程序,并在显示“用户帐户控制窗口”时单击“是”。
![https://www.codeproject.com/KB/mentor/1273315/03_Uac.png](https://www.codeproject.com/KB/mentor/1273315/03_Uac.png)
- 单击“继续”按钮。
![https://www.codeproject.com/KB/mentor/1273315/04_VsInstaller.png](https://www.codeproject.com/KB/mentor/1273315/04_VsInstaller.png)
- 等待下载完成。
![https://www.codeproject.com/KB/mentor/1273315/05_VsInstaller1.png](https://www.codeproject.com/KB/mentor/1273315/05_VsInstaller1.png)
- 选择组件,如下图所示。
![https://www.codeproject.com/KB/mentor/1273315/06_VsInstaller2.png](https://www.codeproject.com/KB/mentor/1273315/06_VsInstaller2.png)
- 安装完成后,使用Microsoft帐户登录(或创建一个帐户)。
![https://www.codeproject.com/KB/mentor/1273315/07_LaunchVS.png](https://www.codeproject.com/KB/mentor/1273315/07_LaunchVS.png)
- 登录后,窗口会显示您的凭据。
![https://www.codeproject.com/KB/mentor/1273315/08_Activate_VS.png](https://www.codeproject.com/KB/mentor/1273315/08_Activate_VS.png)
- 要激活Visual Studio,需要转到“帮助”=>“关于Microsoft Visual Studio”
![https://www.codeproject.com/KB/mentor/1273315/09_Activate_VS_2.png](https://www.codeproject.com/KB/mentor/1273315/09_Activate_VS_2.png)
- 将打开一个窗口,需要点击“许可证状态”链接。
![https://www.codeproject.com/KB/mentor/1273315/10_Activate_VS_3.png](https://www.codeproject.com/KB/mentor/1273315/10_Activate_VS_3.png)
- 许可证是试用版。要将其更新为完整许可证,只需单击“检查更新的许可证”链接即可。
![https://www.codeproject.com/KB/mentor/1273315/11_Activate_VS_4.png](https://www.codeproject.com/KB/mentor/1273315/11_Activate_VS_4.png)
- 单击完成后,许可证将升级为完整的“Visual Studio社区”类型。
![https://www.codeproject.com/KB/mentor/1273315/12_Activate_VS_5.png](https://www.codeproject.com/KB/mentor/1273315/12_Activate_VS_5.png)
安装Easy持续集成服务器和客户端
安装程序可。
- 下载安装程序后,安装'Easy Continous Integration Server.msi'
![https://www.codeproject.com/KB/mentor/1273315/19_InstallEasyCI_Server.png](https://www.codeproject.com/KB/mentor/1273315/19_InstallEasyCI_Server.png)
- 在欢迎界面上点击“下一步”。
![https://www.codeproject.com/KB/mentor/1273315/20_InstallEasyCI_Server_2.png](https://www.codeproject.com/KB/mentor/1273315/20_InstallEasyCI_Server_2.png)
- 接受“许可协议”并点击“下一步”。
![https://www.codeproject.com/KB/mentor/1273315/21_InstallEasyCI_Server_3.png](https://www.codeproject.com/KB/mentor/1273315/21_InstallEasyCI_Server_3.png)
- 如果需要,请重新选组安装文件夹并点击“下一步”。
![https://www.codeproject.com/KB/mentor/1273315/22_InstallEasyCI_Server_4.png](https://www.codeproject.com/KB/mentor/1273315/22_InstallEasyCI_Server_4.png)
- 点击“安装”按钮。
![https://www.codeproject.com/KB/mentor/1273315/23_InstallEasyCI_Server_5.png](https://www.codeproject.com/KB/mentor/1273315/23_InstallEasyCI_Server_5.png)
- 在“用户帐户控制”窗口中点击“是”。
![https://www.codeproject.com/KB/mentor/1273315/24_InstallEasyCI_Server_6.png](https://www.codeproject.com/KB/mentor/1273315/24_InstallEasyCI_Server_6.png)
- 安装完成后点击“完成”。
![https://www.codeproject.com/KB/mentor/1273315/25_InstallEasyCI_Server_7.png](https://www.codeproject.com/KB/mentor/1273315/25_InstallEasyCI_Server_7.png)
- 从下载文件夹中启动“EasyCI.msi”,并以与上面相同的方式继续。
![https://www.codeproject.com/KB/mentor/1273315/26_InstallEasyCI.png](https://www.codeproject.com/KB/mentor/1273315/26_InstallEasyCI.png)
- 如之前链接所述,完全禁用将是一件好事(为了简化开发人员的生活)。
编写一个简单的解决方案来测试EasyCI
该解决方案位于“Inheritance文件夹下。
测试EasyCI
- EasyCI安装完成后,可以同时运行'EasyCI'和'Easy ContinousIntegration Server'(第一个在任务栏中最小化,可以双击其任务栏图标恢复)。
![https://www.codeproject.com/KB/mentor/1273315/27_RunEasyCI.png](https://www.codeproject.com/KB/mentor/1273315/27_RunEasyCI.png)
- 如果我们通过EasyCI恢复窗口(双击任务栏上的图标)删除一个'.sln'文件(参见EasyCI分发的Inheritance 子文件夹),程序将询问要生成“nuget”包的项目是什么,以及要生成安装项目的项目是什么。
![https://www.codeproject.com/KB/mentor/1273315/28_Questions.png](https://www.codeproject.com/KB/mentor/1273315/28_Questions.png)
- 然后编译将开始,执行单元测试并创建安装项目
![https://www.codeproject.com/KB/mentor/1273315/29_Finished.png](https://www.codeproject.com/KB/mentor/1273315/29_Finished.png)
- 从“Archive”目录中获取安装项目,可以安装生成的安装程序。
![https://www.codeproject.com/KB/mentor/1273315/30_Installer1.png](https://www.codeproject.com/KB/mentor/1273315/30_Installer1.png)
- 可以接受用户协议。
![https://www.codeproject.com/KB/mentor/1273315/31_Installer2.png](https://www.codeproject.com/KB/mentor/1273315/31_Installer2.png)
- 选择安装文件夹。
![https://www.codeproject.com/KB/mentor/1273315/32_Installer3.png](https://www.codeproject.com/KB/mentor/1273315/32_Installer3.png)
- 确认安装。
![https://www.codeproject.com/KB/mentor/1273315/33_Installer4.png](https://www.codeproject.com/KB/mentor/1273315/33_Installer4.png)
- 等待安装。
![https://www.codeproject.com/KB/mentor/1273315/34_Installer5.png](https://www.codeproject.com/KB/mentor/1273315/34_Installer5.png)
- 完成整个安装过程。
![https://www.codeproject.com/KB/mentor/1273315/35_Installer6.png](https://www.codeproject.com/KB/mentor/1273315/35_Installer6.png)
- 每个循环后,每个构建都被归档(默认情况下在'c:\Temp\Archive'下)
![https://www.codeproject.com/KB/mentor/1273315/38_Archive_Inheritance.png](https://www.codeproject.com/KB/mentor/1273315/38_Archive_Inheritance.png)
- 对于每个编译项目,构建输出都保存在名为'[ProjectName] _ [CompileDate] - [CompileTime] _ [TargetFramework] .zip'的文件中
![https://www.codeproject.com/KB/mentor/1273315/40_BuildOutput.png](https://www.codeproject.com/KB/mentor/1273315/40_BuildOutput.png)
- 所有源代码都保存在名为'[SolutionName] _Source_ [CompileDate] - [CompileTime] .zip'的文件下。
此zip包含两个主文件夹: - 包含子文件夹(名为'[SolutionName] _ [CompileDate] - [CompileTime]')的文件夹存档,其中包含生成的'.nupkg'文件
![https://www.codeproject.com/KB/mentor/1273315/42_Nupkg.png](https://www.codeproject.com/KB/mentor/1273315/42_Nupkg.png)
- 在包含完整源代码的编译期间使用的名为临时文件夹的文件夹
同一文件夹还包含两个名为“[SolutionName] .bat”和“[SolutionName].actions.bat”的批处理文件
- 第一个包含所有的在构建/测试/打包(build/test/pack)过程中执行的命令
![https://www.codeproject.com/KB/mentor/1273315/45_Commands.png](https://www.codeproject.com/KB/mentor/1273315/45_Commands.png)
- 第二个允许使用名为“ExecuteAction.exe”的“Easy Continous Integration Server”安装路径中包含的命令重现所有构建/测试/打包(build/test/pack)过程
![https://www.codeproject.com/KB/mentor/1273315/46_Actions.png](https://www.codeproject.com/KB/mentor/1273315/46_Actions.png)
配置EasyCI
可以配置EasyCI默认具有的各种行为。
下面是这些配置的完整列表:
- ConfigurationName:获取或设置项目文件中使用的配置的名称(默认情况下为:Debug或Release)。
- DontAllowTargetFrameworkToOutputPath:获取或设置不允许目标框架以Visual Studio 2017项目格式输出路径的可能性。
- FilesToProcess:获取或设置要处理的文件。
- FilesToRemove:获取或设置要删除的文件(不处理)。
- FileTypesToInclude:获取或设置要包含的文件类型。
- FoldersToExclude:获取或设置要排除的文件夹。
- IncompatibleAssemblies:获取或设置不兼容的程序集。
- PackagesDirectory:获取或设置包目录。
- Platform:获取或设置平台(x86,x64或AnyCPU)。
- ProjectsExtensionsParts:获取或设置支持的项目扩展名(.vbproj,.csproj)。
- ProjectsToPatch:获取或设置要修补的项目。
- RemovePackagesAsAssemblyReference:获取或设置将包作为程序集引用删除的可能性。
- SettingsToEdit:获取或设置要编辑的设置。
- WildcardsToInclude:获取或设置要包括的文件类型通配符。
- ArchiveZipDirectory:获取或设置归档构建zip文件的目录。
- VisualStudioPath:获取Visual Studio路径。
- SolutionToPublish:获取或设置要编译的解决方案,构建安装程序并将包发布到nuget。
- SolutionsToPublish:获取或设置要编译的解决方案集,构建安装程序并将包发布到nuget。
- ProjectsToCreateInstall:获取或设置要创建安装的项目。
- NugetLocation:获取或设置nuget位置。
- DeleteOldLogs:获取或设置删除旧日志的信息。
- ProjectsToInclude:获取或设置要包含的项目。
- DeleteNuSpecIfExists:获取或设置如果存在则删除nuspec文件的信息。
- HigherVersionRange:获取或设置更高版本范围以增加实际包版本。
- ResourcesDirectory:获取或设置用于创建安装程序项目的资源目录。
- WinUIExtension:获取或设置win UI扩展。
- KeyToPublish:获取或设置要发布的密钥。
- LowerVersionRange:获取或设置较低的版本范围,以确定是否必须考虑之前的包以达到兼容性。
- NuGet:获取或设置从中下载nuget.exe的URL。
- NugetServer:获取或设置官方nuget服务器URL。
- PrivateNugetServer:获取或设置私有nuget服务器URL。
- PrivateNugetServerBase:获取或设置私有nuget服务器基本URL。
- PublishToOfficialRepository:获取或设置一个值,该值指示是否发布到官方nuget服务器。
- ReleaseNotes:获取或设置发行说明。
- RequireLicenseAcceptance:获取或设置一个值,该值指示包是否需要许可证接受。
- NugetUpdate:获取或设置有关更新nuget包参考的项目的信息。
- Tags:获取或设置用于创建包的标签。
- VersionIncrement:获取或设置版本增量。
- BaseAddress:获取或设置用于各种Easy持续集成服务器控制器的基础地址。
- TemporaryDirectory:获取或设置临时目录。
- ZipExclusion:获取或设置zip排除通配符。
“Easy Continuous Integration Server”如何定义其管道
Easy Continous Integration Server使用文件“EasyContinousIntegrationServer.exe.config”中定义的信息定义其管道。
查看此文件,在其开头,我们可以看到两个重要部分:
- 第一个定义了可能的插件:
这里,我们有许多条目,其中一个键定义了一个接口名称和一个值,而其中定义了程序集名称和实现该接口的类。请注意,每个自定义接口必须从程序集“NugetLibrary”中定义的“IPipelineAction”接口继承,这一点很重要。每次需要使用该接口的操作时,“Easy Continous Integration Server”将尝试加载值中指定的类(如果尚未加载)并执行“IPipeLineAction”接口中定义的方法“Execute”。主要思想是,如果有人想要在“Easy Continous Integration Server”管道中定义一个新动作,那么就可以在自定义程序集中创建一个继承自“IPipeLineAction”接口的新接口及其类(使用.Net Framework)版本4.6或更高版本),并在文件'EasyContinousIntegrationServer.exe.config'顶部添加一个定义。 - 第二个定义了插件序列:
'Easy Continous Integration Server'管道由三个子部分组成。 - BuildActions:用于构建和测试解决方案。
- BuildInstallersActions:用于创建安装程序。
- FinalActions:用于存档结果文件。
原文地址:
转载地址:http://nuzhj.baihongyu.com/