网上的教程基本都是Linux系统下安装Jenkins,并且发布到Linux系统下的docker中,
于是打算在全部windows的环境中,完成Jenkins的持续集成功能。
环境:
服务器环境:
windows 10 专业版
docker for windows
SSH Server on Windows(安装文件以及配置参照https://winscp.net/eng/docs/guide_windows_openssh_server#fnt2)
Jenkins环境:
Jenkins下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/windows-stable/jenkins-2.73.1.zip
SSH:由于我之前安装了Git,默认已经安装SSH工具
Jenkins安装完成后(参照博客园有介绍Jenkins安装的文章),打开web管理界面
http://localhost:8080/ (如果打不开,则可能是由于端口冲突,Jenkins服务没有启动。要么更换端口,要么终止占用该端口的进程,重启服务。)
开始配置Jenkins:
1.插件安装:
系统初始化启动过程中已经安装了部分插件,如果需要安装新插件则进入
系统管理->插件管理->可选插件进行直接安装,其中SSH插件必须安装
2.配置SSH Server
在系统管理->系统设置 拉到最下面
1)生成私钥与公钥
找到.ssh所在路径,通常是C:\Users\Administrator\.ssh
右键Git Bash Here,如下图,生成id_rsa,id_rsa.pub,known_hosts
右键打开id_rsa.pub,复制文件中的内容:
在服务器中的C:\Users\Administrator路径下创建.ssh 文件夹并在文件夹中创建authorized_keys文件,把id_rsa.pub中的内容覆盖到authorized_keys
网上说的ssh-copy-id命令我这里不知道为什么不好用,所以就手动覆盖。
在服务器中可以使用以下指令创建文件
在Path to Key 配置私钥地址:
以上配置完成后,电极Test Configuration,如果没有问题,会提示 Success
以上配置完成后,开始进行新建任务,并进行配置
我使用的事git管理源代码
配置构建
我们会用到以下两个插件
脚本如下
//通过git取得源代码到工作区后,在工作区进行代码编译发布JenkinsPublishBuild文件夹中,WebGeestar是web项目所在的文件夹
dotnet restore "%WORKSPACE%"
dotnet build "%WORKSPACE%"
dotnet publish "%WORKSPACE%\WebGeestar" -o "%WORKSPACE%\JenkinsPublishBuild"
//将发布后的文件进行打包用于上传到远程服务器,注意:Docker文件已经在WebGeestar文件夹中,用于后续的Docker镜像创建
"C:\Program Files\WinRAR\WinRAR" a -r -ep1 "%WORKSPACE%\JenkinsPublishBuild\source.zip" "%WORKSPACE%\JenkinsPublishBuild"
下图上传一个批处理文件,以及运行批处理文件,这么做的目的也是无奈之举。
按照官方的说法,上传文件后,在Exce command会在文件发布之后执行命令,但是实际操作发现,并不是严格按照这个顺序,
而且每次还无法执行多条命令,这个和网上的做法匹配不上,所以我就将命令写到批处理文件中,将bat文件发布到服务器,再通过执行服务器中的bat文件,进行批处理操作。
bat脚本如下:
cd NetCorePublish
"D:\Program Files (x86)\WinRAR\winrar" x -o+ source.zip
cd JenkinsPublishBuild
docker build -t wlgneturl/autowebfile001 .
docker stop containerfile
docker rm containerfile
docker run --name containerfile -d -p 5001:5001 wlgneturl/autowebfile001
以上配置完成后,点击左下角的保存,返回控制面板,并点击立即构建:
查看构建过程的log
此时docker容器生成,可以访问系统: