安装docker版jenkins
因为jenkins
的docker
版本本身没有 dotnetcore
的环境,所以我们需要先自己动手制作下包含dotnet
环境的jenkins
Docker Container
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 FROM jenkins/jenkinsUSER rootRUN uname -a && cat /etc/*release RUN apt-get update RUN apt-get install -y curl libunwind8 gettext apt-transport-https RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list' RUN apt-get update RUN apt-get install -y dotnet-sdk-2.1.4 USER jenkins
为了方便我已经把配置信息放到了github上大家可以访问直接使用
https://github.com/YahuiWong/jenkins-dotnet-core
使用步骤
初始化docker环境 1 2 3 4 git clone https://github.com/YahuiWong/jenkins-dotnet-core.git cd jenkins-dotnet-coresh init.sh docker-compose up -d
初始化配置jenkins
Open ip:8080 on the browser
vi jenkins_home/secrets/initialAdminPassword & Set the initialAdminPassword string to your jenkins page
至此安装完毕。
配置jenkins
构建dotent core
的任务 构建一个自由风格的软件项目
配置源码管理资料
注意:初次配置的话 需要在 添加一个可以访问代码地址的 Credentials
配置构建脚本 如下图步骤添加打包脚本
打包脚本示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 echo '============查看打包环境================' pwd ls echo $PATH whoami which dotnetdotnet --info dotnet --version echo '============================begin restore=======================================' dotnet restore echo '============================end restore=======================================' echo '============================cd project=======================================' cd ./您的项目路径echo '============================begin build=======================================' dotnet build rm -rf $WORKSPACE /jenkins_publish mkdir $WORKSPACE /jenkins_publish dotnet publish -c:Release -o $WORKSPACE /jenkins_publish cp ./bin/Debug/netcoreapp2.0/您的项目路径.xml $WORKSPACE /jenkins_publish/ echo '============================end build======================================='
配置发布途径 发布插件Publish Over FTP
使用说明
我这里使用的是 jenkins
的Publish Over FTP
插件,安装好此插件之后在 系统管理->系统设置->Publish over FTP 里可以新增一个你要发布的ftp服务器信息。为了保证ftp可以正常连接建议尝试下右下角的Test Configuration
确认success
上面我们已经配置好Publish Over FTP
要用的ftp账号,新增我们新增构建后操作如下图选择此插件
然后选择配置好的ftp选项,配置如下所示
注意:这里的配置信息中 jenkins_publish
是和打包脚本对应的
保存打包任务 立即构建 点击立即构建之后,把构建任务开始进行中
如果想看的实时的构建信息可以点击如下图看到控制台输出
构建完毕 打开部署站点地址,发现站点已经运行起来了
重点说明 Nuget配置说明 如果您的.NET CORE项目使用的了第三方或者自建nuget服务,您需要在 配置下 jenkins_home/.nuget/NuGet/NuGet.Config
的信息 如我的使用了国内博客园的nuget加速地址和自建的nuget服务配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?xml version="1.0" encoding="utf-8"?> <configuration > <packageSources > <add key ="nuget.org" value ="https://api.nuget.org/v3/index.json" protocolVersion ="3" /> <add key ="nuget.cnblogs.com" value ="https://nuget.cnblogs.com/v3/index.json" /> <add key ="dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" value ="https://dotnet.myget.org/F/aspnetcore-dev/ap i/v3/index.json" /> <add key ="192.168.1.32:9001/nuget" value ="http://192.168.1.32:9001/nuget" /> </packageSources > <packageRestore > <add key ="enabled" value ="True" /> <add key ="automatic" value ="True" /> </packageRestore > <bindingRedirects > <add key ="skip" value ="False" /> </bindingRedirects > <packageManagement > <add key ="format" value ="0" /> <add key ="disabled" value ="False" /> </packageManagement > </configuration >
发布iis站点时,文件被占用 使用 app_offline.htm
配置文件解决 可以先用ftp插件上传一个app_offline.htm
文件,部署完站点之后删除此文件 具体参考:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.1#app_offlinehtm
执行远程命令 解除占用 上一种解决方案文件被占用的方案有个弊端,app_offline.htm生效时间无法保证,所以最直接方案是直接使用命令行 关闭和启动站点 来解除占用
安装 配置 SSH plugin
搜索到插件安装好插件之后 在 系统设置 -> 全局设置 里面设置 目标服务ssh的ip端口&账号信息 为了保证是可以使用的 请 Test Configuration
通过 需要注意的是:Remote Directory
选项是 该ssh账号的默认目录 在之后的发布任务 设置的目录又是以 Remote Directory
为 根目录为基础的!
构建任务设置顺序 调整 核心模块 调成为:编译打包->ssh远程关闭iis站点->发布到远程根目录->ssh远程开启iis站点
转载请注明出处 http://blog.yahui.wang/2018/05/31/jenkins-docker-dotnet-core-publish/