jenkins 实现 持续集成 windows + linux
- 中心服务器安装 jenkins 服务
- 项目服务器安装ssh服务
- maven 项目jenkins 配置
中心服务器安装 jenkins 服务
windows 版
备注:一下以msi为例,也可自己下War包放tomcat启动服务
Jenkins的下载地址: https://jenkins.io/download/
Jenkins的安装:一路Next,均默认值,如果需要更改安装路径也可以自己更改
具体步骤如下:
1.下载下来一个压缩包jenkins-2.89.4.zip,然后解压缩
2.点击jenkins.msi文件进行安装,界面展示如下:
3.点击‘Next’按钮进行下一步
可以更换目录,剩下的就一路下一步就可以了
4.配置端口号:
- 先去停掉服务
- 修改端口号
安装目录下找jenkins.xml 文件修改端口号如下:
(默认安装目录: C:\Program Files (x86)\Jenkins)
- 修改完后重新启动服务
5.安装成功后直接访问:http://localhost:8888/可以看到的界面如下
直接打开红色部分提示的文件,复制内容到当前密码框
6.录入秘钥会让你选择需要安装的插件,我选择安装的全部,展示的内容如下:
7.创建管理员账号
备注:如果登录账号后显示空白,可重启服务
8.加载完展示的内容如下:
以上就是安装Jenkins成功了
linux版
安装java(jenkins需要java)
下载jenkins的官网repo源
rpm导入jenkins官网的公钥(因为是https下载的)
安装jenkins。
#yum install java
#wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
#rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
#yum -y install jenkins
配置文件在/etc/sysconfig/jenkins,web服务(jetty)默认使用8080端口,若要修改,编辑配置文件里JENKINS_PORT变量;建议改成8081(如果你用gitlab的unicorn也默认8080端口),把8080留给gitlab。
然后设置防火墙、启动/开机启动jenkins
#firewall-cmd --zone=public --add-port=8081/tcp --permanent
#firewall-cmd --reload
#systemctl start jenkins
#systemctl enable jenkins
注: firewall-cmd命令含义:
- –zone #作用域
- –add-port=8081/tcp
- #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效。
日志存储在/var/log/jenkins/jenkins.log。
接着就可浏览器访问localhost:8081,访问不了的话,看看是否防火墙。
根据提示输入验证随机密码,然后安装插件,此时可能提示
“Jenkins maybe offline”,因为你没有科学上网,所以挂个VPN吧骚年。
如果日后想要升级的话,直接重新 #yum -y install jenkins 即可。
2 配置
安装成功后,登录到localhost:8081,系统要求你Unlock Jenkins:
#cat /var/lib/jenkins/secrets/initialAdminPassword
看一下系统中的那串随机密码然后输入。
接着会给你推荐插件,你可以选择Install suggested plugins,也可以Customize。
如果自定义,建议必装的插件:
- Git Plugin:使用Git作为源代码管理
- Python Plugin:Adds the ability to execute python scripts as build steps.
- Violations:代码质量检测,支持pylint、jslint等
- Email Extension Plugin: 邮件通知服务。
配置邮件服务
1 【系统管理 - 系统设置】里,下拉找到【Jenkins Location】,输入系统管理员邮件地址(以qq为例,如12345@qq.com)。
2 下拉到最后,找到【邮件通知】。【SMTP服务器】输入【smtp.qq.com】;【用户默认后缀】输入【@qq.com】;点击高级并勾选【使用SMTP认证】;【用户名】一定要和上面系统管理员邮件地址相同,如【12345@qq.com】;【密码】可以是【账户密码/客户端授权码】;勾选【使用ssl协议】,【SMTP】端口使用【465】;【Reply-ToAddress输入和上方相同的【12345@qq.com】,【字符集】用utf-8。
勾选【通过发送测试邮件测试配置】,然后输入一个email地址,点击测试并检查是否收到即可。
注意:你的管理员邮箱(即12345@qq.com)必须要开通POP3/SMTP服务,具体可以登录QQ邮箱,【设置 - 账户 - 开启服务】中勾选。我配置时开了两个:【POP3/SMTP服务】、【IMAP/SMTP服务】。
项目服务器安装ssh服务(windows)
安装ssh服务有两种方式: freeSSHd 和 powershellserver
-
freeSSHd 下载及安装
下载地址 http://www.freesshd.com/?ctt=download
这两个都下
先安装 freeSSHd
它会自动为freeSSHD添加系统服务,如下图所示:
它会自动开启ssh服务:
会弹出一个命令行窗口,显示开启了SSH服务,该命令行窗口一闪而过。
最后用 freeUserImport.exe 工具导入登录用户,如下图所示:
freeSSHd 设置:
- ssh端口配置
listen address : 选择本机地址
port : 选择未被占用的端口
-
password adthentication 这项要选择 required 不然 外部连接可能会报密码错误
-
ssh账号配置
选择 NT authentication 标识使用用户系统密码
- 启动ssh服务
配置完成后点击启动服务
- 不要忘了在防火墙中允许 TCP port (对应的端口号)端口的进和出。
以下为自己公司的端口转发配置
应用端的打开添加端口转发的配置:
每个应用端都有安迅通,在安迅通里配置对应的端口转发
注意映射地址为本机ip地址
协议是tcp
端口号最好统一
注意内外网卡选择 别错了
-
测试中心服务能否连接应用服务
在测试中心的服务器上(windows) 下使用 putty 连接 刚刚设置好的 服务器ssh服务
输入用户名密码 (直接使用刚才导入的系统账号用户 例如:Administrator,密码是开机密码)
登入成功如下图所示: (失败会提醒密码错误)
maven 项目jenkins 配置
往下拉找到 Publish over SSH
name: 自己取
hostname: 对应的应用服务器ip地址
username: ssh连接时用的用户名
Remote Directory: 写 \
勾选上 use password anth…
passphrase/password : 填写ssh 连接时用户名对应的密码
port: 应用服务器ssh开启的端口号
timeout :自己看着配置 ,最好设置长点
填好后点击右下角的 test configuration 测试是否通了
如图左下角显示success 表示配置成功!
选择对应的 settings.xml 文件
- jdk 安装
去掉 自动安装前面的 √
在java_home 里面填写java安装路径,如图可配置多个
- maven 安装
maven_home : 选择maven安装路径
最后点击 最下面的 save 保存
插件管理
- Maven Integration plugin
- Publish over SSH
maven 项目 构建 配置
- 新建任务
输入任务名称
选择构建一个maven 项目
点击确定
-
具体配置
描述: 随便写
jdk:选择配置好的jdk 注意项目使用的jdk版本 -
源码管理
-
add 弹窗框
可以选择git 或者 svn
这里以svn 为例
Repository URL :项目地址具体到 pom文件所在那一层
Credentials : 点击add 添加你在该项目的账号密码 -
Build
root pom : pom.xml
Goals and options : maven 构建命令 这里以打包命令为例 (-P prod -e -B -Dmaven.test.skip=true clean package) -
构建后操作
增加构建后操作步骤 选择 Send build artifacts ssh
name : 选择 系统设置里配置要的 ssh server (目标应用服务器地址)
source files : 要传送的文件(相对于jenkins 下的 workspace 目录下 该job名的目录 ),target\*.war
Remove prefix: target (移除目录,不然在目标文件夹下会创建相对于workspace到所需要传送文件直接的目录,例如:目录文件的目录为workspace/send/target/*.war,如果不去除taeget,则会在目标目录下创建此目录)
remote directory: 目标文件保存于目标服务器的目录地址,如果ssh server 已近配置,这里就可以不填写,不然此目录地址会自动创建到目标服务器下(例如改下填写war 则在目标服务器的c盘该用户名下创建War目录)
Exec command : 拷贝完成后运行的脚本(此项可以直接填写 cmd 命令,如未执行 则在 命令前 加 cmd c/ 试试,也可按如图所示直接执行在应用服务器写好的bat 脚本,如果复杂的命令建议写bat 脚本)
exect timeout : 该命令执行超时的时间 (建议更据自己的脚本设置长点,避免脚本未执行完就报timeout错误)
maven 更多的配置信息请参考
https://blog.youkuaiyun.com/u011781521/article/details/76696677?ref=myread
看NBA会员直播 看个球www.kangeqiu.top