• Jenkins实现SVN .NET持续集成(二)


      很早就完成了Jenkins的搭建和预研,但是久久没有应用到实际项目中,今年年初Jenkins陆续投入到实际项目中使用,也暴露出一些问题,如:

      1.使用FTP传输文件时,总是遇到文件被占用,无法替换文件

      2.如何做留痕发布

      3.传输文件过多导致每次发布缓慢


    Jenkins构建项目流程

      拉取项目源码 ——> 调用命令还原 NuGet 包 ——> 调用配置文件生成对应的发布包 ——> 通过 SSH 发布到服务器

    一、搭建SSH服务器

      由于我们服务器用的windows,所以选择了freeSSHd来做我们ssh服务(带有可视化界面,方便操作)

      下载freeSSHd并安装,安装过程中程序会询问是否创建密钥,是否创建Windows服务,直接点是即可,启动程序(最好用管理员启动),找到SSH选项卡将Listen address 选择为当前主机IP,为ssh添加一个专用账户(users选项卡)

      

      Authentucation 选项卡配置一下公钥目录

      ServerStatus 选项卡,将SSH服务启动

      SFTP 选项卡,可以配置传输文件的根路径,注意该路径不能存在中文

      注意:如果不能正常启动

                     检查端口是否占用

                     服务已经运行了,手动关掉即可

      安装putty

      使用puttygen生成密钥对

      将Public key for pasting into OpenSSH authorized_keys file框中的公钥拷贝到文本文档中,注意这段文件只有一行,不要分成多行。然后将这个文本文档重命名成ftpuser,不要有扩展名。最后将这个文本文件拷贝到freeSSHD的公钥目录下

      注意:公钥的文件名称和你要使用的user名相同

      

      点击Save private key将私钥保存,然后拿到我们的Jenkins服务器中

      添加用户也可以选择用户名密码验证的方式

      

      配置Jenkins上的SSH

           添加插件Publish Over SSH

           在Configure System中添加SSH server

     

    二、拉取SVN代码

      建议创建Jenkins专用的svn用户,用于获取代码

      svn仓储地址后使用 @版本号的形式可以获取指定版本的代码

    三、拉取SVN代码

      因为有的项目是不上传Packages目录,需要依赖package.config来还原依赖,所以需要调用一下NuGet的还原命令

      在项目的构建节点,选择Execute Windows batch command

      执行命令"C:Program Files (x86)NuGetNuGet.exe" restore  "%WORKSPACE% est.sln"

    四、调用配置文件生成发布包

      在项目的构建节点,增加一个构建步骤,然后选择Build a Visual Studio project or solution using MSBuild

      MSBuild Version选择msbuildv4.0(在Jenkins全局工具配置中进行配置)

      

      填写要编译的工程文件【相对路径和绝对路径都可以】

      输入命令生成发布包

    /t:ReBuild
    /p:DeployOnBuild=true;Configuration=Release;PublishProfile=JenkinsProfile;VisualStudioVersion=15.0

      

      JenkinsProfile是在项目中配置的用于指定到的目录,具体创建方法如下:

      右键工程项目,点发布,就可以找进行新建发布配置文件了,这是我的配置:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    此文件由 Web 项目的发布/打包过程使用。可以通过编辑此 MSBuild 文件
    自定义此过程的行为。为了解与此相关的更多内容,请访问 https://go.microsoft.com/fwlink/?LinkID=208121。 
    -->
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <PublishProvider>FileSystem</PublishProvider>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <publishUrl>..BuildAPI</publishUrl>
        <DeleteExistingFiles>False</DeleteExistingFiles>
        <PrecompileBeforePublish>True</PrecompileBeforePublish>
        <EnableUpdateable>True</EnableUpdateable>
        <DebugSymbols>False</DebugSymbols>
        <WDPMergeOption>DonotMerge</WDPMergeOption>
      </PropertyGroup>
    </Project>

    五、将发布文件进行压缩

      增加一个构建步骤,并选择Execute Windows batch command

      输入命令将发布文件压缩

    echo 开始压缩 %WORKSPACE%Build 下的发布文件
    if not exist %WORKSPACE%BuildZip (
            md %WORKSPACE%BuildZip
            echo %WORKSPACE%BuildZip 文件不存在,已创建该文件!
        ) else (
            echo %WORKSPACE%BuildZip 文件已存在,删除上一版压缩文件!
            del  %WORKSPACE%BuildZip*.*   /s /q
    )
    E:
    cd E:7zSfx
    "E:7zSfxCreateSfx.bat" %WORKSPACE%Build %WORKSPACE%BuildZip BuildZip%SVN_REVISION%

      在Jenkins服务器的E盘放了一个7zSfx,通过7z命令将发布文件压缩为一个exe文件,输出格式为BuildZip+svn版本号.exe,如 BuildZip12345.exe

      7zSfx附件,由公司一个大神整理,下载

    六、通过SSH将发布文件传输至服务器

      增加构建后操作,选择Send build artifacts over SSH 并选择配置好的SSH

      通过SSH停用对应的IIS站点

      

      传输文件

      

      启动对应的IIS站点

      

  • 相关阅读:
    安卓模拟器黑屏
    关系型数据库的1NF、2NF、3NF
    flowable数据库详解
    spring事务传播行为详解
    springboot整合activity
    各种java面试题目
    springCloud中增加gateway(超详细)
    mysql实现主从复制
    flowable整合springboot
    window安装linux系统
  • 原文地址:https://www.cnblogs.com/Yuuuuu/p/12505217.html
Copyright © 2020-2023  润新知