设为首页 收藏本站
查看: 1323|回复: 0

[经验分享] Windows系统下使用Jenkins 自动发布 .NET core到Linux平台下Docker

[复制链接]

尚未签到

发表于 2018-1-9 21:35:13 | 显示全部楼层 |阅读模式

  • 准备工作(安装过程可以百度,已安装的可以跳过)
  a)     安装Jenkins,安装包下载地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/windows-stable/jenkins-2.73.1.zip
  b)     安装 .NET core SDK,官网地址:https://www.microsoft.com/net/core#windowscmd
  c)      Linux 服务器一台并且安装好 Docker
  d)     好压软件,下载地址:http://sw.bos.baidu.com/sw-search-sp/software/027b0d91ba34c/haozip_5.9.4.10795.exe。注意这不是广告,我们用他来压缩我们本地发布好的源码,因为他支持cmd命令,当然你也可以用其他的代替。为了让它支持cmd命令我们还需要修改一下本地环境变量,右键【我的电脑】->【高级系统设置】->【高级】->【环境变量设置】->选择系统变量【Path】->点击【编辑】->点击【新建】,把好压的安装目录放进去。我好压的安装目录是:C:\Program Files\2345Soft\HaoZip
  图例:



  • 检查环境是否就绪
  a)     Jenkins浏览器打开是否正常,默认打开地址:http://localhost:8080/。
  b)     检查.NET core SDK是否安装好, 打开命令窗口,输入【dotnet】命令回车,会出来基本信息
  图例:

  c)      检查 Linux 服务器一台并且安装好 Docker,连接Linux命令窗口输入【docker】,出来很多信息就对了。
  图例:

  d)     检查好压软件是否安装好,windows下打开命令窗口,输入【HaoZipC】,会出现说明。
  图例:


  • 整体思路大纲
  a)     本地运行单元测试(没有可以跳过)->发布->上传linux服务器->生成docker镜像->docker容器运行

  • 开始干活
  a)     安装Jenkins插件,浏览器打开Jenkins,默认地址:http://localhost:8080/,进入【系统管理-】>插件管理->可选插件->输入插件名称->勾选需要插件->点击【直接安装】。
  需要安装的插件:
  Hudson SCP publisher plugin 上传文件插件
  Publish Over SSH 连接liunx服务器执行名称插件
  Environment Injector Plugin 之定义变量存放插件
  图例:

  b)     Jenkins插件设置,进入系统管理->系统设置,
  找到【SCP repository hosts】上传插件设置位置:
  Hostname:远程liunx服务器 IP地址
  Port:端口(默认22)
  Root Repository Path:文件存放目录
  User Name:登入用户名
  Password/Passphrase:密码
  图例:

  找到【SSH Servers】连接liunx服务器插件设置:
  Name:别名,可以结合业务取
  Hostname:远程liunx服务器 IP地址
  Username:登入用户名
  Remote Directory:连接默认工作目录
  Passphrase / Password:密码
  Port:连接端口(默认22)
  图例:

  【点击高级按钮】
  【勾选】Use password authentication, or use a different key

  c)      创建项目,点击【新建】->输入项目名称->选择【构建一个自由风格的软件项目】->点击【OK】
  图例:

  d)     配置项目,点击【源代码管理】->选择【Subversion】
  图例:

  选择【构建环境】->勾选【Inject environment variables to the build process】,存放变量可以不用
  图例:

  选择【构建】->点击【增加构建步骤】->选择【Execute Windows batch command】
  图例:


  现在开始我们可以按照思路大纲来写命令了。
  1,运行测试脚本:
  :: 切换CMD编码
  chcp 65001
  :: 切换目录
  cd ./Boss.Web.Test/
  :: 还原nuget包
  dotnet restore
  :: 运行测试
  dotnet test
  图例:

  2,发布压缩打包命令
  :: 切换CMD编码
  chcp 65001
  :: 切换目录
  cd ./Boss.Web/
  :: 还原nuget包
  dotnet restore
  :: 编译
  dotnet build
  :: 删除之前发布文件
  cd ./bin
  rd /s /q web-publish
  del web-publish.zip
  cd ..
  :: 发布
  dotnet publish -o ./bin/web-publish
  :: 删除配置文件
  cd ./bin/web-publish
  rd /s /q config
  cd ..
  :: 压缩 好压软件
  HaoZipC a -tzip web-publish.zip "web-publish\*" -r
  图例:

  到这边本地构建工作做完了。
  选择【构建后操作】->点击【增加构建后操作步骤】->选择【Publish artifacts to SCP Repository】,准备上传文件到服务器
  图例:

  下拉选择要上传服务器地址(刚才配置过的都在里面),点击【增加】,第一个上传的是我们的源代码压缩包,第二个是我们要生成docker的依赖文件
  图例:

  文件目录查看

  上传文件好了,接下来我们需要远程连接到linux服务器
  选择【构建后操作】->点击【增加构建后操作步骤】->选择【Send build artifacts over SSH】
  图例:

  远程连接linux执行批处理命令,这个批处理命令我们需要2个。
  1,处理之前发布内容,并且创建新docker镜像( ${自定义变量},可以换成字符)。
  # 工作目录
  WORK_DIR="/root/boss-deploy/web/";
  cd ${WORK_DIR}
  # 删除原有发布文件夹
  rm -rf web-publish;
  # 解压
  unzip -o web-publish.zip
  #删除文件压缩包
  rm -f web-publish.zip;
  #复制Dockerfile文件,到源码目录下
  cp Dockerfile web-publish/Dockerfile
  #切换生成目录
  cd web-publish/
  #备份镜像
  #停止容器
  docker stop ${DOCKER_CONTAINER_NAME};
  #删除容器
  docker rm ${DOCKER_CONTAINER_NAME};
  #删除镜像
  docker rmi $(docker images | grep ${DOCKER_IMAGE_NAME} | awk '{print $3}' | sort -r);
  #创建镜像
  docker build -t ${DOCKER_IMAGE_NAME}:${BOSS_VERSION}${SVN_REVISION} ./;
  图例:

  2,依赖刚创建的镜像,运行容器
  #运行容器命令
  docker run -d -v 服务器目录:docker内部目录 -p 8001:8001 --name 容器名称 镜像名称:镜像版本(没有特定版本可以不要)
  图例:

  到此点击【保存】,所以的配置就完成了。

  返回首页看到刚配置好的数据,点击后面的构建就行了。
  本文章到这里就结束了,我也是第一次研究,如果有问题可以留言,大家相互学习进步,谢谢!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433381-1-1.html 上篇帖子: jenkins slave节点问题总结 下篇帖子: jenkins:一个jenkins项目远程触发另一个jenkins项目构建配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表