tnblog
首页
视频
资源
登录

dotnet项目执行shell脚本实现简单的自动化部署

6295人阅读 2021/9/22 12:56 总访问:6273 评论:2 收藏:0 手机
分类: dotnet

不要k8s、不要docker、不要Jenkins,只要一个部署脚本,只是一个小项目单台服务器,实现提交代码自动执行脚本,拉代码构建部署项目。

创建一个web api 项目,作为webhook,实现接收web请求后执行shell脚本

IMG

项目代码:

  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.Extensions.Logging;
  3. using System;
  4. using System.Diagnostics;
  5. namespace ShellHandler.Controllers
  6. {
  7. [ApiController]
  8. [Route("[controller]")]
  9. public class HandlerController : ControllerBase
  10. {
  11. private readonly ILogger<HandlerController> _logger;
  12. public HandlerController(ILogger<HandlerController> logger)
  13. {
  14. _logger = logger;
  15. }
  16. [HttpPost]
  17. public string Execute(string fileName)
  18. {
  19. try
  20. {
  21. var processStartInfo = new ProcessStartInfo($"./{fileName}") { RedirectStandardOutput = true };
  22. var process = Process.Start(processStartInfo);
  23. if (process == null)
  24. {
  25. Console.WriteLine("Can not run shell .");
  26. }
  27. else
  28. {
  29. using (var sr = process.StandardOutput)
  30. {
  31. while (!sr.EndOfStream)
  32. {
  33. var str = sr.ReadLine();
  34. Console.WriteLine(str);
  35. }
  36. if (!process.HasExited)
  37. {
  38. process.Kill();
  39. }
  40. }
  41. }
  42. return "ok";
  43. }
  44. catch (Exception ex)
  45. {
  46. _logger.LogInformation(ex.Message);
  47. return ex.Message;
  48. }
  49. }
  50. }
  51. }

在服务器部署当前项目

  1. nohup dotnet ShellHandler.dll --urls http://0.0.0.0:8080 &

在项目根目录创建部署脚本publish.sh

  1. #!/bin/bash
  2. #杀死占用8081端口的进程
  3. kill -9 $(lsof -i:8081 -t)
  4. cd /home/web/web-demo/
  5. #拉取代码
  6. git pull
  7. #发布项目到publish文件夹
  8. dotnet publish -o publish
  9. cd publish/
  10. #后台运行项目
  11. nohup dotnet WebDemo.dll --urls http://0.0.0.0:8081 &

添加执行权限

  1. chmod a+x publish.sh

创建一个Demo项目部署到服务器,托管到gitee

IMG

IMG

把webhook地址添加到gitee的WebHooks,并指定脚本文件名

大多数git平台都有webhook功能

IMG

项目做一些改动,git提交代码
IMG

查看gitee触发记录

IMG

查看网站已经完成自动部署

IMG

相关文章:

Docker环境安装及基础命令使用
.Net Core项目使用Docker容器部署到Linux服务器
Linux系统Centos7部署DotNet Core项目及环境安装
dotnet项目执行shell脚本实现简单的自动化部署
jenkins实现dotnet项目持续集成、持续部署(CI/CD)
阿里云容器镜像服务提交代码自动构建Docker镜像

评价

剑轩

2021/9/22 15:14:23

赞!

雨雨雨雨辰

2021/11/6 11:07:30

[good]

Docker 下载 mcr.microsoft.com/dotnet/core/sdk:3.1 老不行

请将其修改为:mcr.azk8s.cn/dotnet/core/sdk:3.1

dotnet run命令

dotnet run - 无需任何显式编译或启动命令即可运行源代码。dotnet run 命令为从源代码使用一个命令运行应用程序提供了一个...

Benchmarkdotnet简单的基准测试

BenchmarkDotNet简单的基准测试[TOC] BenchmarkDotNet简单介绍 BenchmarkDotNet 可帮助您将方法转换为基准,跟踪其性能并...

.net core发布出来的项目无法使用dotnet run

dotnet core 项目publish之后执行dotnet run “找不到要运行的项目”dotnet run命令用于项目的上下文中,而不是构建的程序...

dotnet run 找不到要运行的项目

dotnet run命令用于项目的上下文中,而不是构建的程序集。如果您尝试运行依赖于框架的应用程序dll,则必须使用dotnet而不使...

docker + jenkins 部署dotnetcore webapi

前言docker + jenkins 部署DotNetcore webapi实现自动化部署前言:所谓自动化部署,实际上就是让jenkins 去监听 svn/git 上...

(C)dotnet core 在程序中获取 注释(summary)

前言有个比较怪的需求,就是把我现在所有能够访问的接口都展示出来比如我有一个 home 的控制器,我需要将此控制器的提供的...

dotnet-5.0.17 运行时,与aspnetcore-5.0.17 运行时下载。aspnetcore-runtime-5.0.17-win-x64。dotnet-runtime-5.0.17-win-x64。

https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-5.0.17-windows-x64-installer?cid=g...

shell脚本强制修改MySQL --root密码

话不多说直接拿去撸;PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHread -p &quot...

在windows系统下如何查看及升级powershell到3.0版本

最近在学习.net core,用到了SQLServer.Data.EntityFrameworkCore框架,在根据数据库表生成对应实体类时提示必须先升级本机...

powershell和cmd的区别

在windows上cmd和baipowershell都是命令行执行窗口,duPowershell 从 Windows7 时代开始内置于 Windows 系统当中,可以看作...

linux中shell介绍

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell ...

shell 环境

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。Linux ...

Xshell打开没反应,Xshell7打开没反应,Xshell打开黑屏

环境是win7下面的。 设置兼容性:以兼容模式运行这个程序就行了。

Xmanager7安装后没有xshell。xshell安装失败。xshell安装后打不开。安装xshell报程序集组件错误80070002

xshell安装后打不开。安装xshell报程序集组件错误80070002 Xmanager7是需要依赖Microsoft Visual C++的,安装的时候他默认...
没有个性,不需要签名
排名
92
文章
1
粉丝
0
评论
2
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术