前面我们已经创建了TeamCity Server 和一个 Agent,接下来我们为一个.net core 控制台程序配置自动化的编译。

创建 .net core 项目

我们在本地创建一个简单的 .net core demo程序 hello (这里假设您已经安装了.net core 的 SDK):

mkdir hello
cd hello
dotnet new dotnet restore
dotnet run

如果能看到输出 ”Hello World!”,就说明demo 程序已经OK了:

否则,请参照 .net core的相关文档进行排查。

管理源代码

您可以使用任何代码管理工具来管理demo程序的代码,因为TeamCity几乎支持我们能见到的所有源代码管理工具。笔者使用的是TFS,所以后面的配置会以TFS为例进行。

好了,我们已经完成了准备工作,下面就进入TeamCity开始创建相关的配置。

创建 TeamCity project

TeamCity 通过工程来管理项目相关的配置,所以我们先为 hello 程序创建一个 project。

点击 "Create project" 按钮开始创建 project:

选择手动创建相关的配置,然后进入创建 project 页面:

输入 project 的名称,然后点击 "Create" 按钮完成 project 的创建。

创建 build 配置

Project 可以包含一个或多个 build 配置,这些build 配置才是正干活的单位。我们的目的是要完成 hello 程序的自动化编译,所以我们需要创建一个 build 配置来完成这个工作。

选择手动创建一个 build 配置:

为新的 build 配置指定一个名称, 然后点击 "Create" 按钮完成创建并开始配置这个 build。

配置源代码工具

要编译代码,首先要解决从哪里获取代码的问题,通过创建一个新的 VSC Root,我们告诉 TeamCity 从TFS 上获取程序代码。当然,在这里要选择正确的 VCS 类型。

接着为新的 VCS Root 指定名称,并且设置获取代码的详细信息:

设置完成后可以先点击 "Test connection" 按钮测试一下,然后点击 "Create" 按钮完成 VCS Root 的创建。

看样子 TeamCity 已经可以从 TFS 上获取代码了,但我们仍然需要关注两处细节。

1. 管理获取到 Agent 上的代码的路径:

此处的设置为: 把取到的代码统统放入 hello 目录中。

2. 通过 TeamCity Server 来获取代码

由于我的 Agent 并不能直接连接 TFS, 所以我们可以让 TeamCity 从 TFS 上获取代码然后传递到 Agent 上去编译。

添加 build 步骤

由于稍微复杂一些的任务都不能一步搞定,所以可以为一个 build 配置添加多个 build 步骤。执行的时候,这些步骤被一个接一个的顺序执行。

我们的任务太简单了,所以添加一个命令行类型的 build 步骤就足够了:

其实,我们就是在 hello 目录下执行了 dotnet restore 和 dotnet build 两条命令而已。

收集编译产物

为了得到编译后的程序,我们需要把它们收集起来,然后通过 TeamCity 进行分发。

其实就是指定一个目录,然后让 TeamCity 把里面的东西都添加到一个压缩包里。

到此为止,TeamCity Server 上的配置已经完成了。但是真正干活的是 Agent, 所以我们还要看看 Agent 到底能不能完成编译 hello 程序的任务。

为 Agent 安装 .net core SDK

因为真正的编译是在 Agent 上完成的,所以我们必须保证,hello 程序能够在 Agent 被编译。那么当务之急就是在 Agent 上安装 .net core SDK。我们的 Agent 的 OS 是 Ubuntu 14.04,所以参照 .net core SDK 的安装说明进行安装即可:

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-dev-1.0.-preview2-

检查劳动成果

打开 TeamCity 进入 build 配置页面,点击 "run" 按钮:

在编译完成后,我们可以点击下载编译后的 hello 程序。

TeamCity : 配置第一个工程的更多相关文章

  1. 用Firefly创建第一个工程

    原地址:http://blog.csdn.net/uxqclm/article/details/10382097 安装完成之后,在python script包中就存在 firefly-admin的工具 ...

  2. MyGui笔记(1)建立第一个工程

    记录下学习 MyGui的一些笔记,从建立第一个工程开始. 步骤: 1.右键MYGUI解决方案,添加→新建项目,选择“Win32 项目”,名称为:TestHello.下一步,勾选“空项目”. 2.设置工 ...

  3. [转]QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载

    1.下载windows下的QT库 QT4.8.5 for vs2010: http://download.qt-project.org/official_releases/qt/4.8/4.8.5/q ...

  4. 持续集成工具TeamCity配置使用

    持续集成CI(Continuous Integration)主要包括自动化的编译.发布和测试集成,对于我们信息系统项目开发非常有用.一般开发人员机器上会搭建自己的开发环境,整个项目在服务器上会搭建测试 ...

  5. Annotation 的第一个工程

    一.什么是 Annotation? java.lang.annotation,接口 Annotation.对于Annotation,是Java5的新特性,JDK5引入了Metadata(元数据)很容易 ...

  6. hibernate 的第一个工程

    一.什么是Hibernate? Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hiber ...

  7. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  8. Qt之pro配置多个子工程/子模块

    简述 进行Qt项目开发的时候,尤其是大型项目,经常涉及多工程/多模块问题,其主要思想还是模块化,目的是为了降低程序复杂度,使程序设计.调试和维护等操作简单化. 简述 配置 效果 多工程 多模块 更多参 ...

  9. 【MM系列】SAP MM模块-基础配置第一篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-基础配置第一篇   ...

随机推荐

  1. 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  2. nginx 软连接

    ln -s 目标地址 源地址 ln -s ../../../web-admin/etc/nginx-location.conf web-admin.conf

  3. gdb调试工具vi编译器命令参考网址

    vi编译器命令:参考http://www.cnblogs.com/junw_china/articles/1708967.html gbd调试命令:参考http://blog.chinaunix.ne ...

  4. Retrofit 备注

    1.配置: compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' compile 'com.squareup.retrofit:converter- ...

  5. Nova PhoneGap框架 第八章 滚动条

    你可能会疑惑为什么滚动条这么常见的功能会在这里单独列出,但如果你有过PhoneGap开发经验的话,你就会发现要在Android 2.3 里面实现滚动条那真不是一件容易的事. 8.1 概述 目前主流的P ...

  6. 掀起你的盖头来:Unit Of Work-工作单元

    写在前面 阅读目录: 概念中的理解 代码中的实现 后记 掀起了你的盖头来,让我看你的眼睛,你的眼睛明又亮呀,好像那水波一模样:掀起了你的盖头来,让我看你的脸儿,看看你的脸儿红又圆呀,好像那苹果到秋天. ...

  7. Java接口和抽象类的区别

    今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征: 继承:存在继承关系的子类和父类 重写:子类 ...

  8. 【WP开发】JSON数据的读与写

    在不使用其他库的情况下,WP-RT应用中也可以处理JSON数据.主要的几个类都放到Windows.Data.Json命名空间中: IJsonValue接口作为用于封装JSON数据的规范,其中只读属性V ...

  9. ClickOnce部署(5):自定义安全权限

    今天我们来探讨一下在ClickOnce部署中如何严格控制应用程序的权限. 演示应用 为了在下文中能更好地演示,我们先要做一个测试项目.也为了显得简单易懂,我使用最常用且最常见的WinForm项目,这是 ...

  10. Mask裁切UI粒子特效或者3D模型

    刚好前几天有人问我这个问题,再加上新项目也可能用,所以这两天就研究了一下.其实如果粒子特效 和3D模型 都用RenderTexture来做的话就不会有裁切的问题,但是粒子特效用RenderTextur ...