没有什么高深的东西,1 2天的时间大多数人都能自己摸索出来,这里将自己遇到过的问题分享出来避免其他同学再一次挖坑.


目录

  1. 主从节点

  2. Nuget自动包还原

  3. powershell部署

  4. 内网机器实现基于变化的构建

  5. Github私有项目pull时限


  所谓主从,主要应用的场景例如多种环境(windows/linux,.net/java/php)需要不同的构建基础,而我们又不想都将一系列的步骤和环境混杂在一台构建服务器上,所以类似于go中的代理,jenkins也提供了slave节点的概念,大家可以把不同类别的项目的构建部署在分类的节点服务器上。节点服务器不需要安装完整的jenkins包,构建事件的分发由master端来执行。

这里需要注意的就是主从节点之间的通信,我这里选择是将从节点以windows service的方式启动,而我碰到的坑就是环境变量的配置问题,当我在主从服务都安装好jdk并且配置完环境变量后,发现启动从节点时还是怎么都找不到jdk,卡了半个小时才发现jenkins 从节点的环境变量是需要在web系统中配置的,此坑填平,后者慎入。

至于slave端的分配在构建配置中


  用.net开发的同学nuget应该大多都涉及到,类似java的maven,神器之一,不多说。如果用visual studio开发这里会有一个选项

选中这里的话 会再在你rebuild项目的时候 自动将丢失的包补齐,当然仅限于公众平台上的内容,如果是同学们自己开发的local版本的包还会遇到另外的问题,这里我们重点不计较这些。

回到jenkins上来因为jenkins的构建条件中目前还不支持直接使用.net的ide,所以我们需要安装msbuild的插件

装完以后构建后发现编译失败,各种组件丢失。这里再填一坑,首先卸载我们的主要输出项目,然后编辑项目属性内容,在最后加上一个节点配置

1
2
3
4
<Target Name="AfterBuild">
    <MSBuild Condition="'$(Configuration)|$(Platform)' == 'Release|x86'" Projects="NuGet\NuGet.msbuild" />
  </Target>
  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />  

  还原项目,这样再使用msbuild命令就OK了。


  powershell的使用场景可以这样理解,在我们build通过一个项目后,我们需要将他部署在一台测试服务器上,但是我们的数据库配置需要修改,如何去除人工的干预,这里就需要使用到powershell或者其他工具了。

powershell的使用你可以分为2种,一种是写好ps脚本然后通过batch command中powershell命令来完成,另外一种是jenkins直接安装powershell命令,这里更推荐后者,因为有些时候你并没有权限上服务器上修改脚本或者其他元素,所有后者更直观简单,简单的数据库连接修改脚本

1
2
3
4
5
$original_file = 'xx\web.config'
$destination_file 'xx\web.config'
(Get-Content $original_file) | Foreach-Object {
    $_ -replace 'name="dbdemo" connectionstring=".+" ', 'name="dbdemo"  connectionString="server=(local);database=basedemo;user id=demoUser;password=!@#qqq" providerName="System.Data.SqlClient" '
} | Set-Content $destination_file -encoding UTF8

  如果我们的master机器部署在内网,github通过hook的方式回调不到,那么我们就很难基于github项目的push动作来进行基于版本的即时构建。怎么办?这里可以使用一个取巧的办法

在poll scm模式下选择* * * * *,当系统发现本地文件没有变更时,会忽略掉此次构建。


  github私有项目,主要也就是ssh授权的问题,这里的坑不是权限认证问题,而是github插件的时限问题,默认是10分钟,由于某些项目可能资源比较大,第一次pull的时候耗费时间比较长,但是控制台提示一直停留在认证那个阶段,让操作人员误以为是认证问题,这个估计也算个坑吧。填坑方法如下图:

ok 简单的填坑总结。有些问题虽然小但是一点一点排查总归还是浪费时间,希望对大家有帮助

原创作品允许转载,转载时请务必以超链接形式标明文章原始出处以及作者信息。
作者:熬夜的虫子
点击查看:博文索引

windows下jenkins常见问题填坑的更多相关文章

  1. 持续集成 windows下jenkins常见问题填坑

    [过程改进]持续集成 windows下jenkins常见问题填坑 没有什么高深的东西,1 2天的时间大多数人都能自己摸索出来,这里将自己遇到过的问题分享出来避免其他同学再一次挖坑. 目录 1. 主从节 ...

  2. 【过程改进】 windows下jenkins常见问题填坑

    没有什么高深的东西,1 2天的时间大多数人都能自己摸索出来,这里将自己遇到过的问题分享出来避免其他同学再一次挖坑. 目录 1. 主从节点 2. Nuget自动包还原 3. powershell部署 4 ...

  3. windows下tomcat日志的坑

    最近在调试工程,想着在windows下多开窗口操作方便,结果发现日志竟然不全,百思不得其解.最后发现竟然是部署的坑. 之前的部署都是在bin目录下运行service.bat安装服务后了事,启停都通过t ...

  4. windows下gitee WEBHOOK的坑...

    折腾到凌晨五点,依然没有实现 windows下 分支  push之后服务器自动部署 主要是因为GIT的helper的配置上的问题.最后果断放弃了,最后祭出大招,用 WINDONS命令行自动循环..60 ...

  5. windows下jenkins安装过程中的那些坑

    在jenkins官网https://jenkins.io/download/下载2.89.4版本的war包,使用jar -jar jenkins.war命令安装,报端口被占的错误,使用jar -jar ...

  6. windows下Jenkins环境搭建

    Jenkins简介 Jenkins是一个开源软件项目,业界著名的持续集成工具. Jenkins 安装准备 1.      安装java 并且配置jdk环境 2.      到Jenkins官网下载Je ...

  7. windows下 composer常见问题及处理

    错误一: Warning: This development build of composer is over 30 days old. It is recommend ed to update i ...

  8. Windows 下Jenkins进程误删,如何重启

    手残误删了Jenkins运行的java进程,结果.... 用管理员身份启动cmd 然后进入jenkins目录.运行 net start jenkins 否则会报系统错误5 延伸: net stop j ...

  9. docker 在Windows下使用遇到的坑

    1.大部分系统不支持直接安装docker for windows,只能使用docker toolbox,相当于在Windows上安装了一个linux的虚拟机 2.启动docker toolbox的时候 ...

随机推荐

  1. [Android]用图库打开指定的文件夹,没错是第一个画面直接是图库的文件夹画面

    参考了这个里面的代码 http://bbs.csdn.net/topics/380084274 一直报错 06-16 23:58:50.698 26148-26161/com.example.myap ...

  2. Python获取当前日期及时间

    import time def GetNowTime(): return time.strftime("%Y%m%d%H%M%S",time.localtime(time.time ...

  3. ubuntu14.04下安装ngnix,mediawiki,nodebb,everything,gitlab

    本周折腾了以下几个东西,mediawiki(维基),nodebb(论坛),gitlab(私有git服务器). 本来的目的是搭建一个wiki,选用了mediawiki后,使用apache搭建好了. 搭论 ...

  4. 谢欣伦 - OpenDev原创教程 - 设备查找类CxDeviceFind & CxDeviceMapFind

    这是一个精练的设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxDeviceFind的使用如下: void CUsbSc ...

  5. C++中 引入虚基类的作用

    当某类的部分或全部直接基类是从另一个基类共同派生而来时,这直接基类中,从上一级基类继承来的成员就拥有相同的名称,派生类的对象的这些同名成员在内存中同时拥有多个拷贝,同一个函数名有多个映射.可以使用作用 ...

  6. 解决svn working copy locked问题

    标题:working copy locked 提示:your working copy appears to be locked. run cleanup to amend the situation ...

  7. 关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解

    先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...

  8. ODP方式,大批量数据写入ORACLE数据库

    项目中在同步数据的时候,需要把获得的数据DataTable,写入oracle数据库 因为System.Data.OracleClient写入方式写入大批量数据特别慢,改用Oracle.DataAcce ...

  9. 利用mask layer 勾View

    #define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width #define SCREEN_HEIGHT [[UIScreen main ...

  10. Linux服务器搬迁记(一)

    更换服务器必过之坑(一):文件转移 Linux服务器一般通过ssh进行远程操作,为了避免各种权限问题导致转移不成功,我一般直接使用root账户.这次却是行不通了.ssh进行文件传输,默认禁止用root ...