标签:shell 项目 部署 publish 自动化 dotnet using logger
不要k8s、不要docker、不要Jenkins,只要一个部署脚本,只是一个小项目单台服务器,实现提交代码自动执行脚本,拉代码构建部署项目。
创建一个web api 项目,作为webhook,实现接收web请求后执行shell脚本
项目代码:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Diagnostics;
namespace ShellHandler.Controllers
{
[ApiController]
[Route("[controller]")]
public class HandlerController : ControllerBase
{
private readonly ILogger<HandlerController> _logger;
public HandlerController(ILogger<HandlerController> logger)
{
_logger = logger;
}
[HttpPost]
public string Execute(string fileName)
{
try
{
var processStartInfo = new ProcessStartInfo($"./{fileName}") { RedirectStandardOutput = true };
var process = Process.Start(processStartInfo);
if (process == null)
{
Console.WriteLine("Can not run shell .");
}
else
{
using (var sr = process.StandardOutput)
{
while (!sr.EndOfStream)
{
var str = sr.ReadLine();
Console.WriteLine(str);
}
if (!process.HasExited)
{
process.Kill();
}
}
}
return "ok";
}
catch (Exception ex)
{
_logger.LogInformation(ex.Message);
return ex.Message;
}
}
}
}
在服务器部署当前项目
nohup dotnet ShellHandler.dll --urls http://0.0.0.0:8080 &
在项目根目录创建部署脚本publish.sh
#!/bin/bash
#杀死占用8081端口的进程
kill -9 $(lsof -i:8081 -t)
cd /home/web/web-demo/
#拉取代码
git pull
#发布项目到publish文件夹
dotnet publish -o publish
cd publish/
#后台运行项目
nohup dotnet WebDemo.dll --urls http://0.0.0.0:8081 &
添加执行权限
chmod a+x publish.sh
创建一个Demo项目部署到服务器,托管到gitee
把webhook地址添加到gitee的WebHooks,并指定脚本文件名
大多数git平台都有webhook功能
项目做一些改动,git提交代码
查看gitee触发记录
查看网站已经完成自动部署
相关文章:
Docker环境安装及基础命令使用
.Net Core项目使用Docker容器部署到Linux服务器
Linux系统Centos7部署DotNet Core项目及环境安装
dotnet项目执行shell脚本实现简单的自动化部署
jenkins实现dotnet项目持续集成、持续部署(CI/CD)
阿里云容器镜像服务提交代码自动构建Docker镜像
标签:shell,项目,部署,publish,自动化,dotnet,using,logger 来源: https://www.cnblogs.com/raikay/p/15319485.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。