Jenkins+GitLab+dotnet+Python自动化部署.Net Core项目

  • 部署环境与流程
    1) Jenkins是java产品,需安装JDK8。由于.netFreamwork项目自动化时是基于Windows,所以继续使用Windows server 2012环境下的已有的Jenkins,部署、构建dotnet Core项目继续在Windows平台下操作。
    2) .NET Core SDK:2.2.402。dotnet build构建。
    3) 代码仓库GitLab。
    4) .NET Core服务端CentOS7
    部署环境流程:
  • 需求
    一个项目下分两个子项目,而子项目需分别进行构建部署,构建后分子项目分别同步到不同的server上。所以,计划Jenkins上创建三个Job:A、B、C。A、B分别表示子项目,C分环境统一管理A、B。即C作为A、B的构建入口。C-Job中上按参数选择构建应用,会触发对应的Job-B或Job-C构建,实现思路是python调用JenkinsAPI去实现,后面会具体讲到。大致流程为:
  • Jenkins操作
    1) Jenkins具体安装略。下载见官方网站:https://jenkins.io/download/ ,选择安装Windows版本。
    这里Jenkins安装前,需配置好JDK环境。
    2) 插件安装
    Jenkins安装好后,进入系统管理->插件管理,安装好Msbuild、GitLab、ftp、python等。
    Jenkins+GitLab+Msbuild+Python自动化部署.Net项目
    Jenkins+GitLab+Msbuild+Python自动化部署.Net项目
    3) 新建Job-A
    列出Job中主要设置项。
    Gitlab代码仓库和分支配置如下:

    构建build:
    build前新建“Exceute Windows batch command”,如下图:


    build命令
    dotnet restore "%WORKSPACE%\PreventFraudAPI.Server"
    dotnet build "%WORKSPACE%\PreventFraudAPI.Server"
    dotnet publish "%WORKSPACE%\PreventFraudAPI.Server\PreventFraudAPI.sln" -o "E:\Publish-web\PreventFraudAPI-test\PreventFraudAPI.Server"

    Build构建完后,再新建“Exceute Windows batch command”,从gitlab中拉取项目文件配置项,是gitlbab中集中存放。将集中配置项文件copy到项目构建后的目录中。

    配置文件操作完后,需将Jenkins平台下已构建完后的项目文件同步到.NET Core服务器端CentOS上。涉及Windows和Linux不同的OS间交互问题,这里选择Python实现,主要作了服务器端dotnet应用服务操作、应用程序备份、代码同步等。

    E:\Python-scripts\test\PreventFraudAPI-test2.py代码细节如下:

    import sys
    import paramiko
    class SSHconnection(object):
    def __init__(self, host, port, username, password):
        self._host = host
        self._port = port
        self._username = username
        self._password = password
        self._transport = None
        self._client = None
        self._connect()
    #建立connect连接
    def _connect(self):
        transport = paramiko.Transport((self._host, self._port))
        transport.connect(username=self._username, password=self._password)
        self._transport = transport
    def exec_command(self, command, step):
        if self._client is None:
            self._client = paramiko.SSHClient()
            self._client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            self._client._transport = self._transport
        stdin, stdout, stderr = self._client.exec_command(command)
        data = stdout.read()
        print(‘%s 执行结果: ‘ % step)
        print(data.decode(‘utf-8‘))
        # #输出结果
        # if len(data) > 0:
            # print(‘执行结果:‘)
            # print(data.decode(‘utf-8‘))
        err = stderr.read()
        #输出错误结果
        if len(err) > 0:
            print(‘%s 执行的错误输出:‘ % step)
            print(err.decode(‘utf-8‘))
    #关闭close连接
    def close(self):
        if self._transport:
            self._transport.close()
        if self._client:
            self._client.close()
    if __name__=="__main__":
    host = "10.10.10.75"
    port = 65089
    username = "root"
    password = "password"
    cmd_stop = "systemctl stop supervisor"
    cmd_backup = "cp -r /usr/soft/package/HiCore.PreventFraudAPI.Web/ /usr/soft/backup/HiCore.PreventFraudAPI.Web-`date +%Y-%m-%d-%H:%M`"
    cmd_rsync = "rsync   -vzrtopg  --no-super --numeric-ids  --progress  --port=873 --password-file=/opt/scripts/passwd.sh   [email protected]::PreventFraudAPI-test   /usr/soft/package/HiCore.PreventFraudAPI.Web/"
    cmd_start = "systemctl start supervisor"
    conn = SSHconnection(host, port, username, password)
    print(‘开始停supervisor服务...‘)
    conn.exec_command(cmd_stop, ‘supervisor_stop_service‘)
    print(‘开始备份本地PreventFraudAPI程序...‘)
    conn.exec_command(cmd_backup, ‘backup_app‘)
    print(‘开始同步PreventFraudAPI程序...‘)
    conn.exec_command(cmd_rsync, ‘rsync_app‘)
    print(‘开始启supervisor服务...‘)
    conn.exec_command(cmd_start, ‘supervisor_start_service‘)
    print(‘PreventFraudAPI程序发布完成,请验证!‘)

    4)

  • 原文地址:https://blog.51cto.com/10874766/2458482

    时间: 2024-08-29 00:55:26

    Jenkins+GitLab+dotnet+Python自动化部署.Net Core项目的相关文章

    Jenkins持续集成-自动化部署脚本的实现《python》

    读者须知:1.本手记本着记续接前面的两张手记内容整理2.本手记针对tomcat部署测试环境实现 最近工作比较繁忙,导致这章一直拖延,没有太抽出时间来总结.要实现Jenkins端的持续集成,其实在CI服务配置端很容易,难点呢?就是如何实现自动化的部署.我的脚本设计就是为了解决以下难题: 难点一.如何使得自动化部署脚本更通用 我用的脚本,依赖依赖一个配置文件的模块化,让每一个应用业务模块更加通用.自动化所执行的命令呢?我也是设计想法本着更加通用平台的原则,至少对于tomcat+java or jav

    利用Fabric+Capistrano实现Python自动化部署

    Fabric是一个用于应用(批量)部署和系统(批量)管理的Python库和命令行工具,关于Fabric的介绍请参考:http://www.fabfile.org/. Capistrano是一个用Ruby语言编写的远程服务器自动化和部署工具,关于Capistrano的介绍请参考:http://capistranorb.com/. 本文仅使用Python语言和部分Linux或Windows系统命令,借助Fabric模块和Capistrano的部署思路,实现在Linux平台和Windows平台的自动化

    基于Jenkins,docker实现自动化部署(持续交付)

    前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此,传统的人工部署已经心有余而力不足.持续集成,持续部署,持续交互对于微服务开发来说,是提高团队整体效率不可或缺的一环.合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量.本文不对三个概念做过多的介绍,有兴趣可以读读这篇文章:The Product Managers' Guide to

    jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky-        lulu/cxf_demo-Maven-Webapp)     系统:centos6.5 maven: Apache Maven 3.3.9 git:git version 2.0.0 1.首先安装git,看以前另外一篇博客 http://www.cnblogs.co

    自动化部署java maven项目到多个目标主机的Shell脚本

    本篇是<Linux Shell脚本之远程自动化部署java maven项目>的姊妹篇,但包含了bug.issue修正和添加了更多的支持特性,可以从GitHub上获取最新脚本内容:https://github.com/DingGuodong/AutomaticDeployJavaMavenProject . 自动化部署java maven项目到多个主机的环境条件假设: 1.java maven项目至多有一个依赖项目 2.多个目标主机上的部署目录是相同的 支持特性: 1.在部署主机上将java m

    IIS部署.net core项目

    1.安装AspNetCoreModule模块 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,中间最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,基于这个模块,我们才可以和ASP.NET一样用IIS操作ASP.NET Core站点. 首先,确定我们是否原则AspNetCoreModule模块,打开IIS=>点击一个网站=>模块: 我这里显示没有安装: AspNetCo

    Linux文档整理之【Jenkins+Docker自动化部署.Net Core】

    这次整理的文档是Jenkins+Docker实现自动化部署,很早之前就写的,今天有时间就搬到博客园做个记录. Jenkins是基于Java开发的一种持续集成工具,主要用于持续.自动的构建/测试软件等相关项目.在Java开发中我们经常能看到使用jenkins来部署,.Net core目前还是比较少见的,但是好的东西我们就应该要拿来使用.借鉴. 1. 安装JenKins 这里使用Docker来安装JenKins,当然也可以直接安装到Linux中. 创建jenkins工作目录 mkdir /usr/l

    .net core 项目+jenkins+git+docker实现自动化部署

    一.准备环境 1.1 运行环境Linxu系统 CentOS7.5[腾讯云] 1.2 安装Docker https://www.cnblogs.com/bob-zb/p/12401407.html 1.3 在Docker中安装jenkins https://www.cnblogs.com/bob-zb/p/12402368.html 1.4 准备git仓库,本人使用的是码云 二.创建.net core 项目 创建成功后会自动生成Dockerfile 文件,未对Dockerfile 做任何修改,然后

    Jenkins与Gitlib实现自动化部署与持续构建

    持续部署之jenkins与gitlab(一) 主要部分 安装部署Jenkins和gitlib 了解gitlib的常用命令 部署haproxy与tomcat环境 配置Jenkins使用gitlib更新代码 通过sonar实现代码检测 实现gitlib触发Jenkins自动部署 通过Jenkins实现自动部署 实现haproxy动态添加删除后端服务器 编写脚本实现自动化部署与回滚 持续集成的分类: 持续集成:持续集成是指程序员在代码的开发工程中,可以频繁的将代码部署到主干上,并进行自动化测试 持续交