在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono。因公司的服务器在内网,访问外网时要通过代理,所以在很多步骤都加上了代理,如果你的服务器可以直接访问外网,则可以去掉代理。
1 安装
首先要在Redhat服务器上安装必要的工具。
1.1 安装Java
- 先检查版本,要求1.7及以上
java –version
java version "1.5.0" gij (GNU libgcj) version 4.4.6 20110731 (Red Hat 4.4.6-3)
- 移除旧版本
sudo yum remove java
- 安装1.7
sudo –syum install java-1.7.0-openjdk –nogpgcheck
有时在pgp check时会报错,所以加上了这个参数
1.2 安装Jenkins
sudo wget -e "http_proxy=http://proxyip:8080" -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --httpproxy "http_proxy=http://proxyip:8080" --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
注意上面都用到了proxy,如果你的服务器能直接连外网,可以把proxy去掉
1.3 安装Mono
为了方便测试 .net 的项目,我们安装下Mono:
$ sudo yum -y install bison gettext glib2 freetype fontconfig libpng libpng-devel libX11 libX11-devel glib2-devel libexif glibc-devel urw-fonts java unzip gcc gcc-c++ automake autoconf libtool make bzip2 wget
$ cd /usr/local/src
$ sudo wget http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2
$ sudo tar jxf mono-4.0.1.44.tar.bz2
$ cd mono-4.0.1
$ sudo ./configure --prefix=/opt/mono
$ sudo make
$ sudo make install
export PATH=$PATH:/opt/mono/bin
export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig
参考《http://help.octopusdeploy.com/discussions/problems/39756-install-mono-on-centos-66》
2 配置
2.1 启动Jenkins
cd jenkins
sudo java –jar jenkis.war
这时如果出现下面的错误:
javax.jmdns.impl.HostInfo newHostInfo
WARNING: Could not intialize the host network interface on null because of an error: MDRADEL0: MDRADEL0: Name or service not known
java.net.UnknownHostException: MDRADEL0: MDRADEL0: Name or service not known
则需要改下hosts文件
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
16.173.233.21 nis-sh-02
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
改成如下内容:
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost MDRADEL0
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
16.173.233.21 nis-sh-02
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
这个错误,我先没当回事,但后面在界面上操作时会出现很多错误。
如果你想启动Jenkins还想在redhat服务器上做其它操作,也可以用下面的方式来启动jenkins:
sudo service jenkins start
启动完后,就可以在本机浏览器上用 http://serverip:8080 打开 jenkins了:

2.2 配置Jenkins
安装插件
打开 系统管理 –》 插件管理 –》 可选插件
如果发现里面为空时,要到 “高级”tab里右下角,点击 “立即获取”。
如果点击 “立即获取”按钮时报错:
java.net.ConnectException: Connection timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
看是不是要设置代理:

在“可选插件”里选中 git 、github plugin 和 msbuild 安装。
系统设置
打开 系统管理 –》 系统设置, 设置 git 和 msbuild 选项:

这里要注意的是 Path to MSBuild : /opt/mono/bin/xbuild
后面不能带.exe, 不然在后面“立即构建”时会报错:找不到这个文件。这个path,可以在安装完mono后,用下面的命令查出:
whereis xbuild
xbuild: /opt/mono/bin/xbuild
2.3 配置项目
新建一个 “构建一个自由风格的软件项目”
- 填写git项目的信息:

添加构建步骤,选择前面创建好的“mono”:

3 测试
点击左边菜单的“立即构建”:
在 Build History 下面可以看到Build的结果,红色是失败了。
如果失败了,可以打开这条失败记录的 “Console Output” ,查看失败的原因:

我创建的是一个最简单的unit test项目,所以里面会有一个 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的引用,因为Redhat 只是安装了mono,并没有安装 .net framework, 所以找不到这个引用,于是新建一个目录,把这个dll添加进项目里,再引用这个目录下的dll:

再次点击 “立即构建”,成功了。
在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境的更多相关文章
- Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...
- Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 java mvaen项目构建一个持续集成环境,用到了Jenkins.因公司的服务器在内网,访问外网时要通过代理,所以为m ...
- Azure 项目构建 – 部署 Jenkins 服务器以实现持续集成(CI)
通过完整流程详细介绍了如何通过 Azure 虚拟机.虚拟网络等服务在 Azure 平台上快速搭建 Jenkins 服务器. 此系列的全部课程 https://school.azure.cn/curri ...
- 构建基于Jenkins + Github的持续集成环境
搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...
- 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置
安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclips ...
- [转] 基于Gitlab CI搭建持续集成环境
[From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三 ...
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+jenkins的持续集成环境,并构建了基于maven的项目.这一节,我们继续扩展功能,增加对Nodejs ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- 使用Docker搭建Jenkins+Docker持续集成环境(自动化构建发布部署)
本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...
随机推荐
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- java: web应用中不经意的内存泄露
前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑,今天无意发现如果使用不当,很容易引起内存泄露,测试代码如下: 1.定义一个类App package com.cnblogs. ...
- 最长回文子串-LeetCode 5 Longest Palindromic Substring
题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...
- jQuery禁用或启用
禁用:.attr("disabled","disabled"); 启用:.removeAttr("disabled");
- 不要着急改代码,先想想--centos 6.8下编译安装tmux
诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...
- RTP与RTCP协议介绍(转载)
RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...
- Pramp mock interview (4th practice): Matrix Spiral Print
March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...
- NYOJ 998
这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...
- 搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】
前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知 ...
- SVG:linearGradient渐变在直线上失效的问题解决方案
SVG开发里有个较为少见的问题. 对x1=x2或者y1=y2的直线(line以及path),比如: <path d="M200,10 200,100" stroke=&quo ...
