.NetCore 使用Jenkins发布多环境下的项目并适配数据库EFCore数据库更新及替换配置文件
说明
1、git上的配置地址可能都是本地环境,提交到git server后怎么来使用发布不同环境?
2、关于EFCore本地数据库有更新的情况 添加了 Migrations文件 怎么在构建的时候去更新不同环境下的数据库?
下面就来解决这两个问题
1、在测试服务器上分别建立开发、测试 两个目录用于放.NetCore发布文件(发布的.NetCore 用IISHosting方式)
2、在每个目录下建一个对应的配置文件(服务器环境下的配置文件,用作替换)
如下:发布2个站点(授权认证(Identityserver4 和 UserApi))
开发内测环境(KF)

测试环境(CS)

构建jenkins相关任务
开发内测环境

测试环境下

配置Git获取代码

添加Windows批处理

下面说下命令:
cd D:
cd D:\Web\KF\Idr4
rd /s /q D:\Web\KF\Idr4
cd "%WORKSPACE%\IdentityServices"
dotnet restore
dotnet build
dotnet publish -o D:\Web\KF\Idr4
copy D:\Web\KF\Idr4Config_KF\appsettings.json D:\Web\KF\Idr4
发布之前删除发布的目录 如下操作:
cd D:
cd D:\Web\KF\Idr4
rd /s /q D:\Web\KF\Idr4
然后就是dotnetcore相关命令 还原、构建生成 、发布
cd "%WORKSPACE%\IdentityServices"
dotnet restore
dotnet build
dotnet publish -o D:\Web\KF\Idr4
最后在将服务器配置文件复制到网站发布目录
EFCore相关操作很遇到的问题
由于Identityserver4是用数据库脚本创建的数据,如需要使用模型生成Migrations更新数据库怎么来用?
都知道在实际业务中 数据库更新添加了Migrations文件 发布后需要更新数据库
接下来看下另外一个站点UserApi的配置
cd D:
cd D:\Web\KF\UserApi
rd /s /q D:\Web\KF\UserApi
cd "%WORKSPACE%\UserServicesApi"
copy D:\Web\KF\UserApiConfig_KF\appsettings.json "%WORKSPACE%\UserServicesApi"
dotnet restore
dotnet build
dotnet ef database update -c UserDbContext
dotnet publish -o D:\Web\KF\UserApi
这里就会存在配置文件和数据库更新的一个先后问题,需要先拷贝配置文件到目录,这里有一个小小的陷阱
就是拷贝的服务器配置文件是拷贝到git的工作目录而不是发布出来的目录(这里与IdentityServer4)有区别,拷贝到发布目录是无法执行下面添加的工具的命令

所以先拷贝文件,然后执行相关dotnet命令 最后发布 就OK了
实际效果
针对多环境下只需要在服务器上多设置几个目录拷贝相关环境下的配置文件即可
开发内测环境:
Idr4 在 20000端口
UserApi 在20011端口
测试环境:
Idr4 在 30000端口
UserApi 在30011端口
小小的修改下代码说明看效果 访问下内测地址:
http://192.168.0.233:20011/swagger/index.html

访问下测试地址
http://192.168.0.233:30011/swagger/index.html

多环境多站点自动发布成功了~~
.NetCore 使用Jenkins发布多环境下的项目并适配数据库EFCore数据库更新及替换配置文件的更多相关文章
- NET Core 1.1 版本项目和2.0环境下的项目开发注意事项
在NET Core 1.1开发下的项目最好不要随便把工具更新升级到2.0,这样最容易导致之前的.NETCore直接被升级不兼容早前版本 会引起项目无法启动在运行调试IIS express 时候直接一闪 ...
- mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功
mysql 控制台环境下查询中文数据乱码,插入.更新中文数据不成功 登录mysql密码是加入编码参数--default-character-set,中文用gbk mysql -uroo ...
- .NetCore 利用Jenkins在 Windows平台下打包发布Angular项目
准备环境 安装Jenkins 首先装node,版本根据实际环境而定(node安装包中包含了npm) 安装一般都配置好了环境变量,检查下如果没有就配置下 Jenkins中安装NPM插件 GIt获取代码 ...
- [Jenkins]持续集成环境下fingbug插件的安装使用与配置
参考:https://wiki.jenkins.io/display/JENKINS/FindBugs+Plugin 突然,天降杂事.我是想安安静静的做个美丽的测试...但是事与愿违,项目经理叫我帮忙 ...
- 生产环境下Flask项目目录构建
接触Flask已经有大半年了,本篇博客主要来探讨如何规范化生产环境下Flask的项目目录结构.虽然目录结构见仁见智,个人有个人的看法和习惯,但总的来说,经过很多人的实践和总结,还是有很多共同的意见和想 ...
- netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布
上一篇我们用jenkins做了一个简单的自动化发布,在shell中采用的是 BUILD_ID=dontKillMe nohup dotnet xxx.dll & 这种简单的后台承载,如果你的 ...
- Jenkins在windows环境下安装无法安装插件
在windos平台下安装jenkins要是无法安装插件,tomcat控制台报以下错误: 解决方法: 进入到jenkins里头,Jenkins -- 管理插件 -- 高级 -- 升级站点,如图所示: 将 ...
- IIS环境下部署项目
1.环境部署 1.1安装IIS7 进入控制面板,选择"程序和功能",进入如下页面后,点击"Turn Windows features on or off". 找 ...
- myeclipse在过时的环境下部署项目出现的问题
开发环境 操作系统:xp sp3 2002 (ps:客户公司环境只有这个老古董) 开发工具:myeclipse2014 32位 jdk: 1.7_49 32位 DB:DB2 9.1 32位 ...
随机推荐
- 【codeforces666E】Forensic Examination 广义后缀自动机+树上倍增+线段树合并
题目描述 给出 $S$ 串和 $m$ 个 $T_i$ 串,$q$ 次询问,每次询问给出 $l$ .$r$ .$x$ .$y$ ,求 $S_{x...y}$ 在 $T_l,T_{l+1},...,T_r ...
- python315题
目录 Python基础篇 1:为什么学习Python 2:通过什么途径学习Python 3:谈谈对Python和其他语言的区别 Python的优势: 4:简述解释型和编译型编程语言 5:Python的 ...
- BZOJ1004 HNOI2008Cards(Burnside引理+动态规划)
直接给了一个置换群(当然要自己手动加上不洗牌的情况).考虑求不动点数量即可.对于一个置换,求出所有循环的长度,然后设f[i][x][y]为给前i个循环着色后,用了x张红色卡片.y张绿色卡片的方案数,d ...
- tomcat Failed creating java C:\Program Files\Java\jre6\bin\client\jvm.dll %1 不是有效的 Win32 应用程序。
jdk版本搞的鬼 请下载64位的jdkj进行安装
- 【HDU1710】树的遍历
题目大意:给定一棵 N 个节点的二叉树的前序遍历和中序遍历,求其后序遍历. 题解:递归操作,每次只需知道先序遍历和中序遍历的开始点,左子树大小即可,根据前序遍历的开始位置可知子树根节点的坐标,再在中序 ...
- EasyUI 格式化列
以下实例格式化在 easyui DataGrid 里的列数据,并使用自定义列的 formatter,如果价格小于 20 就将文本变为红色. 为了格式化一个数据网格(DataGrid)列,我们需要设置 ...
- 移动端Web页面问题解决方案
1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显 ...
- Python 基础数据类型之set
set是一个无序且不重复的元素集合,相当于字典的键,不重复,不可变 一.set变量初始化 A = set() #注意在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典 B = {&q ...
- MySQL的DML常用语法格式
MySQL的DML常用语法格式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道MySQL的查询大致分为单表查询,多表查询以及联合查询.多表查询,顾名思义,就是查询的结果可能 ...
- 《Two Dozen Short Lessons in Haskell》(二十四)代数类型
这是<Two Dozen Short Lessons in Haskell>这本书的最后一章,第23章没有习题. 这一章里介绍了Haskell如果自定义一种类型,并且用一个双人博弈游戏为例 ...