首页 > 系统相关 >linux+jenkins+github+.net core CI/CD 快速部署

linux+jenkins+github+.net core CI/CD 快速部署

时间:2024-07-30 16:56:13浏览次数:11  
标签:core CI github systemctl sudo project sh dotnet PATH

目标:
代码提交后,在jenkins点击build,编译通过后能让linux更新.net core 文件和重新运行

 

步骤:

1.腾讯云搞一台免费linux服务器:https://cloud.tencent.com/
2.服务上安装jenkins https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos
3.腾讯云防火墙开放8080端口, 另一台电脑访问jenkins地址http://{公网IP}:8080/
4.jenkins获取密码Unlock解锁,安装git和github插件,msbuild,创建Pipeline 加入脚本(文章最后)
5.github设置webhook http://{公网ip}:8080/github-webhook/ application/json
6.腾讯云防火墙开放5000端口 .net core 默认5000  注意配置服务为0.0.0.0:5000 不是localhost
7.linux 新建服务

  

7.1 sudo nano /etc/systemd/system/{service}.service
7.2 加入以下配置
[Unit]
Description={project} .NET Core 6.0 Web API
After=network.target

[Service]
WorkingDirectory=/opt/{project}
ExecStart=/usr/share/dotnet/dotnet /opt/{project}/{project}.dll
Restart=always
RestartSec=10
SyslogIdentifier={project}
User={你的linux用户名} 
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000 # 添加这一行

[Install]
WantedBy=multi-user.target

7.3
sudo systemctl daemon-reload
sudo systemctl enable roadtodreams
sudo systemctl restart roadtodreams
sudo systemctl status roadtodreams

 

Pipeline脚本:

pipeline {
    agent any

    environment {
        DEPLOY_PATH = '/opt/{project}'  // 设置部署路径
        DOTNET_ROOT = '/usr/share/dotnet'
        PATH = "/usr/share/dotnet:$PATH"
        TARGET_FRAMEWORK = 'net6.0'  // 指定目标框架
        PROJECT_PATH = '{project}/{csproj}.csproj'  // 替换为你的项目路径
    }

    stages {
        stage('Checkout') {
            steps {
                // 检出代码
                git branch: 'main', url: 'https://github.com/{name}/{project}.git'
            }
        }

        stage('Build') {
            steps {
                script {
                    // 恢复依赖项
                    sh "dotnet restore ${PROJECT_PATH}"
                    // 构建项目
                    sh "dotnet build ${PROJECT_PATH} --configuration Release"
                    // 发布项目,指定目标框架
                    sh "dotnet publish ${PROJECT_PATH} --configuration Release --framework ${TARGET_FRAMEWORK} --output ./publish"
                }
            }
        }

        stage('Deploy') {
            steps {
                script {
                    // 确保部署目录存在
                    sh "sudo mkdir -p ${DEPLOY_PATH}"
                    // 将发布文件复制到部署路径
                    sh "sudo cp -r ./publish/* ${DEPLOY_PATH}"
                }
            }
        }

        stage('Run') {
            steps {
                script {
                    // 停止正在运行的实例(假设使用的是 systemd 服务)
                    sh "sudo systemctl stop {service}"
                    // 启动新实例
                    sh "sudo systemctl start {service}"
                    // 你可以添加检查服务状态的命令
                    sh "sudo systemctl status {service}"
                }
            }
        }
    }
}

 

标签:core,CI,github,systemctl,sudo,project,sh,dotnet,PATH
From: https://www.cnblogs.com/TeemoHQ/p/18332863

相关文章

  • 探索Cinema 4D粒子系统与Arnold
    ​Cinema4D结合Arnold是艺术家和工作室在许多领域经常使用的最著名的3D软件和渲染引擎之一,因为它的便利性和多功能性。在Cinema4D2024.4中,我们看到了粒子系统的发布,它可以帮助您在Arnold中生成粒子。工作流程粒子组默认情况下,您需要渲染场景中的所有粒子组,它们以球体的形式......
  • [rCore学习笔记 019]在main中测试本章实现
    写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:[email protected]:https://github.com/WindDevil(目前啥也没有批处理操作系统的启动和运行流程要想把本章实现的那些模块全部都串联在一起以实现运行一个批处理操作系统,回顾本章内容,思考批处理操作......
  • 我正在尝试通过编辑 github 上的代码来解决我下载的验证码图像
    importkerasimportpandasaspdimportnumpyasnpimportcv2importglobimportimutilsfromimutilsimportpathsimportosimportos.pathimportsysimporttensorflowprint(os.getcwd())os.environ['TF_ENABLE_ONEDNN_OPTS']='0'cap......
  • Crash Course Computer Science
    【计算机科学速成课】[40集全/精校]-CrashCourseComputerScienceep1.EarlyComputingCharlesBabbageEnglishmathematicianandinventorconceivedthefirstautomaticdigitalcomputerAdaLovelaceEnglishmathematicianthefirstcomputerprogramme......
  • 解决国内 github.com 打不开的最最最准确方法
    我们编程的有时候打不开github.com,很运费,我有一个方法,试了,可以。如果有谁也打不开也可以试试。1、打开网站https://tool.chinaz.com/dns/,在A类型填写github.com,点击按钮【立即检测】。2、下拉,看到如下界面。3、随便复制一个IP地址,打开C:\Windows\System32\drivers\etc......
  • 洛谷题单指南-前缀和差分与离散化-P3017 [USACO11MAR] Brownie Slicing G
    原题链接:https://www.luogu.com.cn/problem/P3017题意解读:将一个r*c的矩阵,横向切成a条,每一条纵向切除b块,计算每一块子矩阵之和的最小值最大是多少。解题思路:要计算最小值中最大的,直觉上可以采用二分,下面来分析单调性:给定一个子矩阵块之和的值,值越小可以划分的条数、块数就越多......
  • ASP.NET Core中上传文件
    1.创建一个文件上传的表单在一个视图中(比如Index.cshtml),添加一个表单来让用户选择文件并上传。@modelIFormFile<formmethod="post"enctype="multipart/form-data"><divclass="form-group"><labelfor="file">选择文件</......
  • 如何从 scipy.interpolate.BSpline 中提取 BSpline 基础
    在这个问题我向社区询问了scipy.interpolate.splev如何计算样条线基础。我的目标是通过预先计算asplev来更快地计算样条线bsplinebasis并通过执行以下操作来生成曲线basis到controlpoint点积。从那时起一个新......
  • 如何使用我的 CoreML 模型在 Vision 中获取 MLMultiArray 输出
    我正在尝试在swift中将我的CoreMl模型与Vision框架结合使用。我的模型输出一个MLMultiArray。当我通过Vision运行它时,我确实得到了一个输出,但是输出的类型是VNObservation,我无法使用它,也无法将其转换为MLMultiArray。有谁知道如何获取MLMultiArray作为输出,或将VNOb......
  • 优化 GitHub 体验的浏览器插件「GitHub 热点速览」
    上周,GitHub有个“安全问题”——CFOR(CrossForkObjectReference)冲上了热搜,该问题的表现是:远程仓库的提交内容任何人可以访问,即使已被删除。只需要拿到commitID+源/Fork的项目地址,任何人都能访问之前提交到远程仓库的内容。下面有3个演示,可以复现该问题:演示一:Fork项目......