温州文成网站建设,美妆网站建设环境分析,Wordpress页面函数,上海龙象建设集团公司网站背景 一直以来#xff0c;程序署都是非常麻烦且无聊的事情#xff0c;在公司一般都会有 devops 方案#xff0c;整个 cicd 过程涉及的工具还是挺多的#xff0c;搭建起来比较麻烦。那么对于一些自己的小型项目#xff0c;又不想搭建一套这样的环境#xff0c;怎么办呢。。… 背景 一直以来程序署都是非常麻烦且无聊的事情在公司一般都会有 devops 方案整个 cicd 过程涉及的工具还是挺多的搭建起来比较麻烦。那么对于一些自己的小型项目又不想搭建一套这样的环境怎么办呢。。。前段时间尝试了一下 阿里云效 pipeline gitee ecs 还是挺方便的主要是免费^ ^服务器也可以用自建的或者其他的下面就分享一下如何使用代码准备 随便准备个demo项目并提交到 gitee## 创建aspnetcore web项目
dotnet new web -o aspnetcoredemo服务器环境 首先去服务器安装下 dotnet 运行时我这里是用centos。参考官方文档 在 CentOS 上安装 .NET - .NET | Microsoft Docs[1]## 安装 .NET 之前请运行以下命令将 Microsoft 包签名密钥添加到受信任密钥列表并添加 Microsoft 包存储库。 打开终端并运行以下命令
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm## 通过 ASP.NET Core 运行时可以运行使用 .NET 开发且未提供运行时的应用。 以下命令将安装 ASP.NET Core 运行时这是与 .NET 最兼容的运行时。 在终端中运行以下命令
sudo yum install aspnetcore-runtime-6.0安装完成自动部署 进入云效平台流水线选择 .NET Core 流水线模板创建配置流水线第一步是配置流水线源选择代码源码云当然你也可以选别的github自建git之类的授权一下然后选择你的代码仓库默认分支名。下面的工作目录随便写一个比如demo第二步配置构建主要是执行命令和打包路径 注意下其他的选项默认就行## cd到项目目录
cd aspnetcoredemo## 还原项目
dotnet restore
## 发布项目
dotnet publish -c Release -o out第三步配置部署主机组我这里选 阿里云 ecs 你也可以选其他非阿里云的主机要装插件添加服务器连接授权创建即可选择主机下一步保存我这里就一台机器也可以多台机器部署部署脚本## 创建目录
mkdir -p /home/admin/aspnetcoredemo/## 解压文件到 /home/admin/aspnetcoredemo/ 目录
tar zxvf /home/admin/aspnetcoredemo/package.tgz -C /home/admin/aspnetcoredemo/## 执行部署脚本
sh /home/admin/aspnetcoredemo/deploy.sh restart部署脚本这个 deploy.sh 加到项目代码中这个脚本的大概内容就是 杀死进程-重新启动程序-健康检查-部署完成内容如下#!/bin/bash# 修改APP_NAME为云效上的应用名
APP_NAMEaspnetcoredemoPROG_NAME$0
ACTION$1
APP_START_TIMEOUT20 # 等待应用启动的时间
APP_PORT5000 # 应用端口
HEALTH_CHECK_URLhttp://127.0.0.1:${APP_PORT}/HealthChecks # 应用健康检查URL
HEALTH_CHECK_FILE_DIR/home/admin/status # 脚本会在这个目录下生成nginx-status文件
APP_HOME/home/admin/${APP_NAME} # 从package.tgz中解压出来的dll放到这个目录下
DLL_NAME${APP_HOME}/${APP_NAME}.dll # dll的名字
DLL_OUT${APP_HOME}/logs/start.log #应用的启动日志# 创建出相关目录
mkdir -p ${HEALTH_CHECK_FILE_DIR}
mkdir -p ${APP_HOME}
mkdir -p ${APP_HOME}/logs
usage() {echo Usage: $PROG_NAME {start|stop|restart}exit 2
}health_check() {exptime0echo checking ${HEALTH_CHECK_URL}while truedostatus_code/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code} ${HEALTH_CHECK_URL}if [ $? ! 0 ]; thenecho -n -e \rapplication not startedelseecho code is $status_codeif [ $status_code 200 ];thenbreakfifisleep 1((exptime))echo -e \rWait app to pass health check: $exptime...if [ $exptime -gt ${APP_START_TIMEOUT} ]; thenecho app start failedexit 1fidoneecho check ${HEALTH_CHECK_URL} success
}
start_application() {echo starting dotnet process# chmod x ${DLL_NAME}# chmod x ${APP_HOME}/appsettings.json# nohup dotnet ${DLL_NAME} Urlshttp://*:${APP_PORT} ${DLL_OUT} 21 cd ${APP_HOME}nohup dotnet ${APP_NAME}.dll Urlshttp://*:${APP_PORT} ${DLL_OUT} 21 echo started dotnet process
}stop_application() {checkdotnetpidps -ef | grep dotnet | grep ${APP_NAME} | grep -v grep |grep -v deploy.sh| awk {print$2}if [[ ! $checkdotnetpid ]];thenecho -e \rno dotnet processreturnfiecho stop dotnet processtimes60for e in $(seq 60)dosleep 1COSTTIME$(($times - $e ))checkdotnetpidps -ef | grep dotnet | grep ${APP_NAME} | grep -v grep |grep -v deploy.sh| awk {print$2}if [[ $checkdotnetpid ]];thenkill -9 $checkdotnetpidecho -e \r -- stopping dotnet lasts expr $COSTTIME seconds.elseecho -e \rdotnet process has exitedbreak;fidoneecho
}
start() {start_applicationhealth_check
}
stop() {stop_application
}
case $ACTION instart)start;;stop)stop;;restart)stopstart;;*)usage;;
esac记得复制到输出目录增加一个 HealthChecks 接口用于部署脚本的健康检查手动构建流水线 点击运行如果前面配置没有问题的话可以看到构建部署成功。访问一下ok自动构建下面通过 webhook 配置实现提交代码自动构建部署流水线选择触发配置打开 webhook 触发将这个 webhook 地址复制配置到你的 gitee 仓库中保存接下来随便修改下代码测试下提交代码后自动触发了流水线构建部署ok结束 Happy coding ...参考资料[1]在 CentOS 上安装 .NET - .NET | Microsoft Docs: https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos