在好久以前net还只能在windows上部署的时候,或许不少创业公司的朋友发布项目还都是人肉部署,反正windows都是可视化的界面,拖拖拉拉,开开关关还不linux
是特别麻烦。。。现现在你的项目须要在linux上部署,惋惜的是再也没有什么可视化的界面给你,全在xshell上操做,若是在xshell上部署个位数的项目你们或许还可git
以接受,若是要部署10+以上的服务呢,估计不少人在xshell上敲的头都大了。。。这就是为何docker会有dockerfile,会有容器编排的docker-compose,因此找docker
一款自动化发布工具迫在眉睫了。shell
一: Jenkins部署windows
它的官方网址是:https://jenkins.io/download/ ,使用docker模式部署的话太简单了,本篇就不用Docker部署,而是直接部署到宿主机Centos上,以下图:浏览器
1. 导入jenkins的key安全
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
2. 使用yum安装svn
yum install jenkins
3. 启动jenkins工具
[root@localhost ~]# service jenkins start Starting jenkins (via systemctl): [ OK ]
4. 而后在浏览器中输入你的虚拟机IP: http://192.168.23.173:8080,看到下面的界面就算成功了。this
而后你们就能够按照步骤一步一步下去就能够了。
二:构建你的netcore程序
先提供一个简单的test程序,供后续作自动化部署只用。
static void Main(string[] args) { var bgtask = Task.Run(() => { for (int i = 0; i < 1000; i++) { Log.Info($"i={i}"); Thread.Sleep(1000); } }); AppDomain.CurrentDomain.ProcessExit += (s, e) => { Log.Info($"{DateTime.Now} 恭喜,TestService服务程序已准备退出!"); Environment.Exit(0); }; bgtask.Wait(); }
三:jenkins配置
1. 点击新建任务
2. 选择构建一个自由风格的软件项目,而后点击肯定
3. 这里的“源码管理”tab页是很是重要的,默认支持git和svn,这里就选择svn了,把你生成svn的地址贴上去,由于后续
执行shell脚本的时候,会在jenkins的workspace文件夹中执行dotnet publish 的。
4. 在“构建” tab页中,最最重要的就是里面的shell脚本。
ps -ef | grep MemSql.Test.dll | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill cd ./MemSql.Test mkdir -p /data/output/MemSql.Test/v${BUILD_NUMBER} dotnet publish -o /data/output/MemSql.Test/v${BUILD_NUMBER} -c Release cd /data/output/MemSql.Test/v${BUILD_NUMBER} BUILD_ID=dontKillMe nohup dotnet MemSql.Test.dll &
这里要关心的几处是:
《1》 在kill pid的时候,若是pid不存在,你的默认脚本会报pid不存在的错误的,因此加上 --no-run-if-empty 的if判断,没有就
不执行kill。
《2》 使用了一个Jenkins的一个环境变量 {BUILD_NUMBER} , 也就是下图中的这个位置,用这个编译版本号做为文件夹。
《3》 由于我是用nohup生成后台进程的,因此要使用dotKillMe命令让jenkins不要在生成完后kill 它。
而后点击保存,这个Test项目的自动化部署就搞定了。。。
四:操做流程
在操做以前,必定要记得让 jenkins用户提高一下权限,不然你的 copy,mkdir可能权限不足,这里我就提高成root权限。
1: 把jenkins用户加入到root组中。
gpasswd -a root jenkins
2:修改/etc/sysconfig/jenkins文件, 把原来的 users= jenkins 改为root。
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins. # JENKINS_USER="root" JENKINS_GROUP="root"
3:重启Jenkins便可
service Jenkins restart
4. 而后你的步骤为:
《1》 在svn中提交代码。
《2》 找到你的所属项目,点击“当即构建”。
固然也可让jenkins自动化构建,可是考虑到生成项目,最好仍是加上手工发布这个按钮,安全可靠, 构建完以后,你们能够看看 jenkins的 “控制台输出”。
而后你能够经过ftp去生产看一下,果真都跑起来了,v21就是个人编译版本号,并且你的日志果真就是个人业务逻辑输出,对吧,以下图:
这时候,你以为代码有问题,须要修改一下,把i 改为 m ,接下来的步骤也就是 “提交代码” -> “可视化当即编译” -> "查看结果" 这样的流水线做业而已啦。。。。
好了,本篇就说到这里,但愿对你有帮助。