jenkins 构建分发

使用的工具及技术:

1、Jenkins安装、部署

2、JenkinsTFS配置 MSBuild配置

3、Jenkins分发程序(xcopy、Azure、net、PsExec、ServerManager)

   Jenkins官网下载地址https://jenkins.io/content/thank-you-downloading-windows-installer/#stable(Windows),下载安装后,可以访问http://localhost:8080/进行用户设置登录。

    系统管理--》插件管理:安装Team Foundation Server Plug-inMSBuild Plugin


         系统管理--》系统设置:配置tfs



         系统管理—》Global Tool Configuration:配置MSBuild




新建一个构建项目和简单配置



碰到的问题有:

1. Querying for remote changeset at '$/MData/SourceCode/MasterData3.0-Release/' as of 'D2017-05-05T05:50:40Z'...

Query returned no result!

原因是tfs工程路径错误

2.FATAL:com.microsoft.tfs.core.exceptions.TECoreException: 工作区 Hudson-MData-MASTER;hexiaoer 已存在于计算机MACBOOK 上。

原因是工程名称与TFS重名,需要修改Jenkins工程名称。

3.构建后出现error。

原因一般都是tfs上项目编译出现了问题,要先将源码在vs上编译通过,再构建。如果还是不行就要查看项目编译的MSBuild和Jenkins配置的MSBuild环境是否一致。

 

分发的核心代码(就是配置的Publisher.exe)有:

Net: (系统自带)

var info = new ProcessStartInfo()

{

Arguments= @" use \\10.2.13.23 "111111"/user:administrator",

FileName= "net.exe",

WindowStyle= ProcessWindowStyle.Hidden

};

var process = Process.Start(info);

process.WaitForExit();

process.ExitCode;

 

Xcopy:(系统自带)

var info = new ProcessStartInfo()

{

Arguments= @" D:\Deployment\Agent  \\10.2.13.23\C$\Deployment /E /I /R /Y",

FileName= "xcopy.exe",

WindowStyle= ProcessWindowStyle.Hidden

};

var process = Process.Start(info);

process.WaitForExit();

process.ExitCode;

 

PsExec(需要下载,在目标服务器要有psexec服务运行,如果没有调用exe会没效果)

var info = new ProcessStartInfo()

{

Arguments= @" \\10.3.2.8 -u administrator -p qwe111! -cC:\Deployment\Agent.exe",

FileName= "PsExec.exe",//这里要指定exe的具体路径

WindowStyle= ProcessWindowStyle.Hidden

};

var process = Process.Start(info);

process.WaitForExit();

process.ExitCode;


 

Azure:

ServicePointManager.ServerCertificateValidationCallback= ValidateCertificate;(获取或设置用于验证服务器证书的回调。具体如何使用可以在网上找下)

varconnectionString = "DefaultEndpointsProtocol=https;AccountName=blob;AccountKey=8kR6NNeWdgp0oKtYMLN1K+nQFCR+bpF67dlNtInz9QePAOY9nOuCABSS*********==;EndpointSuffix=core.Chinacloudapi.cn";

var account = CloudStorageAccount.Parse(connectionString);

var client =account.CreateCloudBlobClient();

var container =client.GetContainerReference(ConfigurationSettings.AppSettings["MicContainerReference"]);

var blob =container.GetBlockBlobReference(ConfigurationSettings.AppSettings["MicBlockBlobReference"]);

 

// 上传压缩文件

using (varstream =File.OpenRead(appZipPath))//zip))

{

     blob.UploadFromStream(stream);

}

 

ServerManager:

var manager = newServerManager();

var pools = manager.ApplicationPools;

var pool = pools[name];

if (pool == null)

{

     // 创建应用程序池

     pool = pools.Add(name);

}

 

// 设置应用程序池

pool.AutoStart =true;

pool.Cpu.Limit =80;

pool.ManagedPipelineMode= ManagedPipelineMode.Integrated;

pool.ManagedRuntimeVersion= "v4.0";

pool.ProcessModel.IdentityType= ProcessModelIdentityType.SpecificUser;

pool.ProcessModel.IdleTimeout= TimeSpan.Zero;

pool.ProcessModel.Password= password;

pool.ProcessModel.UserName= userName;

pool.Recycling.PeriodicRestart.Memory= 0;

pool.Recycling.PeriodicRestart.PrivateMemory= 0;

pool.Recycling.PeriodicRestart.Schedule.Clear();

pool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("04:00:00"));

pool.Recycling.PeriodicRestart.Time= TimeSpan.Zero;

//pool.StartMode = StartMode.AlwaysRunning;

// 获取网站

var sites = manager.Sites;

var site = sites[name];

if (site == null)

{

//创建网站

site= sites.Add(name, target, port);

}

// 设置网站

site.ApplicationDefaults.ApplicationPoolName= name;

site.Bindings.Clear();

site.Bindings.Add("*:" + port + ":", "http");

 

代码调试通过后,开始用Jenkins构建,出现net链接失败问题,在代码调试是没问题的。

解决方法是修改Jenkins服务属性登录账户和密码,然后重启服务。


服务器上的代理程序一直下载不了微软云上的文件,需要联系网络的同事配置服务器可访问微软云。



图片复制太复制了,就没有一个一个上传。图片复制太复制了,就没有一个一个上传。
http://note.youdao.com/noteshare?id=3cbe8b3e0e5451dc0f117366b6a733af&sub=7C07125D1D99434C95AFCF929CC42923


图片复制太复制了,就没有一个一个上传。
### Jenkins 构建流程详解 #### 一、概述 Jenkins 是一种流行的开源自动化服务器,主要用于实现持续集成和持续交付(CI/CD)。通过配置不同的 Job 或 Pipeline,可以自动执行代码编译、测试、打包以及部署等一系列任务。 #### 二、操作架构图 为了更好地理解 Jenkins 的工作原理,下面展示了一个简化版的操作架构图: ![Jenkins 操作架构](https://example.com/jenkins_architecture.png)[^1] 该架构展示了从源码管理工具获取最新版本的代码开始,经过一系列处理步骤最终完成应用部署的过程。 #### 三、详细流程 整个构建过程大致分为以下几个阶段: ##### 1. 触发构建 可以通过多种方式来启动一次新的构建任务。常见的触发机制包括但不限于: - 手动点击“立即构建- 定时调度计划定期运行特定的任务 - SCM轮询检测是否有新提交 - 其他项目的成功完成后触发当前项目 - GitHub Webhook 推送事件通知 Jenkins 开始构建[^3][^4] ##### 2. 准备环境 一旦收到构建请求,Jenkins 就会准备必要的资源用于本次构建活动。这可能涉及到创建工作空间目录、克隆Git仓库中的代码库等准备工作。 ##### 3. 编译与测试 接下来就是核心环节——实际执行预定义好的命令序列来进行应用程序的编译及单元测试等工作。对于 Java 后端开发而言,通常意味着调用 Maven 或 Gradle 工具链去完成这些目标[^2]。 ```bash mvn clean install -DskipTests=false ``` 这段脚本表示清理旧数据并安装依赖项的同时也允许执行所有关联的测试案例。 ##### 4. 打包产物 如果前面各步均顺利完成的话,则继续前进至打包成品阶段。此时应依据具体需求选择合适的格式封装成果物;比如 Spring Boot 应用程序可能会被打成 JAR 文件形式保存下来以便后续分发使用。 ##### 5. 发布制品 最后一步便是将上述得到的产品上传到指定位置供下游工序取用。例如发布到 Nexus 私服或是直接推送 Docker 镜像至容器注册中心等等。 ##### 6. 清理现场 无论成败与否,在结束之际都应当妥善整理好临时占用的空间和其他残留下来的副产品,以免影响下一轮作业正常开展。 #### 四、参数化构建 借助于 `Build with Parameters` 插件的支持,可以在发起构建之前让用户输入某些自定义参数作为全局变量在整个过程中被引用,从而提高灵活性和适应性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值