倍福PLC部署Jenkins入门使用笔记
一 安装
1.安装JKD
这儿我用的是(jdk-8u201-windows-x64)。
2.环境变量:
1)新建环境JAVA_HOME,值:C:\Program Files\Java\jdk1.8.0_201(安装位置)
2)Path值添加:值%JAVA_HOME%\bin。
3.安装jenkins
在官网下载Jenkins.msc,一路点击next。
4.启动
输入网址:localhost:8089(默认是8080,在安装界面可以改)
5.解锁
启动后按照提示内容解锁
6.设置url
一般设置当前网络的ip,查看方法,cmd-ipconfig
7.插件安装
一般使用选择推荐,但是用时较长。
8.外部插件安装(特殊插件下载时可以用到)
下图为插件下载地址
安装时,进入插件管理-选择高级,如下图,将下载好的hpi文件选择,然后deploy。
9.服务器(主机)和构建机(执行程序编译)所需软件统计
服务器:jdk,jenkins.msc
构建机:visualstudio,twincat XAE(full),jdk,git,innosetup-6.0.4.exe
10.插件统计
Role-base(权限)
Git(Git工具拉取代码)
Gitlab(Gitlab拉取代码)
Git Parameter(参数化选择分支)
Credentials Binding(凭证管理)
Credentials(凭证储存)
Powershell(脚本)
Email Extension(邮箱扩展)
Multiple SCMs(多源代码管理,一个工程拉取多个仓库代码)
Publish over SSH(服务器拉代码所需)
Job Configuration History(job误删可以恢复)
Windows Exe Runner(运行windows exe使用,可以不安装)
二 权限管理
1.所需插件
安装后,重启(在主页的网址后面加/restart)
在Configure Global Security中选择role-base
2.新建用户
在manage user中新建用户
3.分配角色
点击上图 ,进入
1)添加全局角色
点击管理角色,添加一个role的只读角色
2)添加项目角色
注意:pattern为正则表达式,表示只允许操作item1
3)分配角色
如下图,将name1分配为只读的global权限,同时只能操作item1.
三 节点添加(分布式构建)
1.设置Global Tool Configuration
在manage jenkins——Global Tool Configuration中
一般不推荐自动安装,取消掉自动安装的勾选,在JAVA_HOME填上jdk安装的路径,JAVA_HOME也可为空。
JDK自动安装如下图示:
2.本机节点设置如下图:
在manage jenkins——manage nodes clouds中
注意选择好后,需要通过提示链接登陆Oracle账号,然后点击保存。
注意:本机作为服务器端,也就是安装配置jenkins的电脑
环境:jemkins安装包
3.构建机节点
构建机需要的环境:sdk,git,visualstidio
前面都是默认的,在Number of executors设置为6
重要的的配置见下图:
主要是把构建机里边的GIT和SDK的程序目录写正确。
4.构建机启动
如上图,点击launch,会有一个后缀为jnip的文件
此时,在构建机上打开该文件,根据提示即可连上节点。
5.节点关联JOB
在建好的项目里边点击配置,勾选限制节点 ,输入节点的名称,保存即可
6.节点自动开机启动
在file中点击install as a service。
四 添加凭证
1.生成密匙
名称配置:git config --global user.name "我的名字"
邮箱配置:git config --global user.email "我的邮箱"
此时在C:\Users\Administrator目录下生成.gitconfig配置文件,可以用记事本打开查看。
生成密匙:ssh-keygen -t rsa -C "我的邮箱",按三下回车,生成完毕
路径是C:\Users\Administrator\.ssh,里边有两个文件id_rsa(私钥)和id_rsa.pub(公钥)
2.GITLAB添加公钥
记事本打开id_rsa.pub,全部复制,登陆gitlab,将复制的内容粘贴到Key的文本框,ADD KEY
3.genkins添加私钥凭证
在构建的时候如下图,点击添加
选择SSH Username。
在下图处把私钥的内容粘贴上
4.验证ssh连接
将远程仓库的url(注意是ssh的)粘贴到以下位置,无凭证或者凭证错误,会出现红色的报警提示字。
正确的话,如下图
5.使用群晖的nas作为git仓库
1)使用ssh方式添加密钥
2)添加凭证
如下图,Username填写nas的账号,Private key不写任何东西,passphrase写上nas的密码。
五 项目操作
1.新建项目
点击新建项目,建立一个自由风格的项目。
2.配置
点击配置,源码管理,参照步骤三,添加好远程仓库和凭证,点击保存。
分支修改:项目默认是master,但是gitlab或者github中是main,在此处修改。
提示:远程仓库的操作见我的下一篇文章-gitlab操作
3.拉取代码
点击项目下的build now,开始拉取代码。
代码拉取信息:在构建历史中点击#1(第1次构建),出现以下的构建详情
此时代码被拉取到 C:\ProgramData\Jenkins\.jenkins\workspace\test。
4.关联节点
5.构建触发器
6.powershell构建
1)powershell脚本含义
Remove-Item -Path C:\TwinCAT\3.1\Boot\* -Recurse <# 删除文件夹中的文件#>
do { $dte = new-object -com VisualStudio.DTE.15.0 <#实例化倍福自动化接口#>;$sln = $dte.Solution } while(-not $?)
echo "Object Success"
$sln = $dte.Solution <#定义变量#>
$prjDir = "C:\jenkins\code\workspace\MYtest\"<#文件路径#>
$prjName = "Axis_Test.sln"<#项目名称#>
$prjPath = $prjDir + $prjName<#项目完整路径#>
$plcPrjProjectName = $prjDir + "Axis_Test\Main_Test\Main_Test.plcproj"<#PLC文件路径#>
$removeTargateNetIDPath = $prjDir + "Axis_Test\Axis_Test.tsproj"<#tsproj文件路径#>
C:\jenkins\Build\RemoveTargateNetID.ps1 $removeTargateNetIDPath <#NetId查找#>
do { $dte.MainWindow.Visible = $true <#显示visualstidio窗体#> } while(-not $?)
Start-Sleep -s 3 <#挂起3s#>
do { $sln.Open($prjPath)<#打开项目#> } while(-not $?)
echo "Project opened"
Start-Sleep -s 5 <#挂起5s#>
#$ValueTemp=$dte.Solution.Projects.Item(1).Object.ConfigurationManager.ActiveTargetPlatform.Equals("TwinCAT RT (x64)")
#if ($ValueTemp)
{$dte.Solution.Projects.Item(1).Object.ConfigurationManager.ActiveTargetPlatform = "TwinCAT RT (x64)"}<#选择编译平台#>
echo $dte.Solution.Projects.Item(1).Object.ConfigurationManager.ActiveTargetPlatform<#输出编译平台信息#>
Start-Sleep -s 1 <#挂起1s#>
do { echo $? $sln.SolutionBuild.BuildProject("Debug|TwinCAT RT (x64)",$plcPrjProjectName,$true) } while(-not $?) <#生成项目#>
Start-Sleep -s 1 <#挂起1s#>
do { echo $? $sln.Projects.Item(1).Object.ActivateConfiguration() } while(-not $?) <#激活项目#>
Start-Sleep -s 1 <#挂起1s#>
do { echo $? $sln.Projects.Item(1).Object.StartRestartTwinCAT() } while(-not $?)<#PLC重启#>
Start-Sleep -s 1 <#挂起1s#>
do {$sln.Close($prjPath)<#关闭项目#>;$dte.MainWindow.Visible = $false<#关闭visualstidio窗体#> } while(-not $?)
echo "Project closed"
Remove-Item -Path C:\jenkins\ProjectTemp\Boot\* -Recurse <#清理BOOT缓存#>
Remove-Item -Path C:\jenkins\ProjectTemp\Driver\* -Recurse <#清DRIVER缓存#>
New-Item -Path C:\jenkins\ProjectTemp\Driver -Name AutoInstall -Type "directory" -Force <#建立项目#>
Copy-Item -Path "C:\TwinCAT\3.1\Driver\AutoInstall\*" -Destination "C:\jenkins\ProjectTemp\Driver\AutoInstall\" -Force -Recurse <#复制文件#>
Copy-Item -Path "C:\TwinCAT\3.1\Boot\*" -Destination "C:\jenkins\ProjectTemp\Boot\" -Force -Recurse <#复制文件#>
2)启用脚本
有两种,我采用的是使用powershell直接调用,这种方式需要安装powershell插件
下面的语句表示:打开该路径下的powershell脚本
还有一种是采用windows batch构建,上图的可以采用此种方式构建。
PowerShell "& 'C:\jenkins\Build\Build.ps1'"
7.构建后操作
1)选择邮箱发送,发送格式为http,其他的都是默认。
2)advanced setting
触发按以下设置。设置成Alaways。
六 参数化项目构建
1.插件安装
Multiple SCMs
git parameter
2.变量建立
1)勾选This project is parameterized,如下图
2)参数类型介绍
参数类型如下图示,我们常用的为choice parameter和git parameter
3)版本选择类型变量建立
选择choice parameter,如下图,建立Version变量
4)git分支变量建立
如下图,默认值为master版本,在参数构建时,会自动列出所有git上的分支
3.git分支选择
如下图,将指定分支用之前定义的变量替代
注意:这种采用git parameter的方式,只能构建一个远程仓库的分支。
如果,有多个远程仓库,分别需要选择分支去构建,可以采用5中的方法。
4.多个远程仓库拉取代码
1)远程仓库建立
如下图所示,设置成多代码拉取,分支如下所示。
当还有代码需要拉取的话,如下图,点击Add SCM选择Git,又会出现上图的界面,添加远程仓库和需要拉取的分支即可。
2)多个代码分配子目录
在Additional Behaviours中选择check out to a sub-directory
然后添加子目录:
3)超时时间设置
在Additional Behaviours中选择Advancedclone behaviours
4)浅克隆
不获取历史版本
5.多个远程仓库,多个选择分支构建
对于多个远程仓库,多个选择分支构建时,采用choice parameter,将所有的分支列出用来代替Git parameter,即可实现。
分支之间用空格或者换行来隔开。
构建时可通过状态,查看,如下图。
6.参数化构建中的变量调用
1)power shell中:
C:\jenkins\Build\AllBuild.ps1 ${env:MachineType} ${env:Version}
其中,MachineType和Version是jenkins中新建的两个参数
2)windows bat中 :
PowerShell "& 'D:\Build\Prepare.ps1'" %MachineType% %Version%
七 流水线项目:创建
1.插件
pipeline
2.概念
agent any代表节点
stage:流程,代表一个分组
label:节点机选择
node:节点,一个具体运行环境
step:单步操作
buildjob:构建工程
bat:通过bat方式打开外界文件
3.部分代码
pipeline
{agent anystages{stage('Build') {agent {label 'Builder'}steps {echo 'RTC Building'build job: 'RTCtest', parameters: [string(name: 'RGS_Branch', value: 'master'), string(name: 'BSM_Branch', value: 'master'), string(name: 'MachineType', value: 'TaiChiB'), string(name: 'Version', value: '1.3.11.210805')]}}stage('Deploy') {agent{label 'built-in'}steps {echo 'RTC Deploying'bat 'C:\\Users\\OUR\\Desktop\\DeployTCS\\test.txt'}}stage('test') {agent {label 'built-in'}steps {echo 'RTC test'bat 'C:\\output\\Install.bat'}}}
}
八 邮箱设置
我使用企业邮箱进行配置的,其他的邮箱类似
1.系统管理员地址
这个是自己的邮箱账号
2.Extended E-mail Notification(扩展)
1)SMTP 服务器
一般是stmp加邮箱后缀,比如我的就是smtp.ourunited.com
2)SMTP 端口
具体看各个邮箱的支持,可以在邮箱中查到,这里我的设置为25
3)邮箱凭证
选择密码和用户方式。然后输入邮箱账号和密码 。
4)默认用户电子邮件后缀
邮箱后缀,我的是ourunited.com
5)默认内容类型
有纯文本的和html的,这里我选择html,到7)默认内容可以用得到。
6)默认收件人
自己的邮箱
7)默认主题
【】里边就是发给邮箱的主题
【Jenkins自动构建通知】$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
8)默认内容
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> 本邮件由系统自动发出,无需回复!<br/> 各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td> </tr> <tr> <td><br /> <b><font color="#0B610B">构建信息</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>项目名称 : ${PROJECT_NAME}</li> <li>构建编号 : 第${BUILD_NUMBER}次构建</li> <li>触发原因: ${CAUSE}</li> <li>构建状态: ${BUILD_STATUS}</li> <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> <li>FTP Url : <a href="ftp://192.168.99.209">ftp://192.168.99.209</a></li> <li>共享路径 : <a href="\\192.168.99.209\Release">\\192.168.99.209\Release</a></li> </ul> </td> </tr> </table>
</body>
</html>
9)Default Triggers
3.邮件通知
1)stmp服务器
和2设置的一样,smtp.ourunited.com
2)默认后缀
和2设置的一样,@ourunited.com
3)勾选使用stmp认证
用户名:邮箱账号
密码:邮箱密码
端口:和2设置的一样
4.邮件测试
勾选邮件测试,写上自己的邮箱账号
九 jenkins迁移
- 新服务器安装jdk文件,配置jdk中的JAVA_HOME路径
- 新服务器部署Jenkins
- 将老服务器上的jenkins_home文件下(config.xml文件,jobs文件夹,users文件夹和plugins文件夹)都复制到新服务器上,复制时两台服务器最好都停止工作。目录查看在config中。
- 重启新服务器jenkins服务,net stop jenkins;net start jenkins;
- 将老服务器当中的plugins的插件都复制到新服务器当中plugins目录当中;
- 重新全局设置、git设置、任务当中的源代码管理等等。读取旧的配置文件即可,但是Git账号密码要重新配置
十 遇到的问题
1.jenkins服务器进入不了
如果用无线网登陆,而且换了无线网,这时候用ipconfig可以看到,ip已经改了,用新的ip登陆进入
2.jenkins卡死在重启中
重启安装有jenkins的电脑
3.jenkins服务启动不了
在计算机——服务中,点击启动服务,立马又停止
解决方法:卸载SDK后,重新安装,在服务中启用jenkins服务(services.msc)。
按照之前配置在jenkins中的路径安装,然后重新设置环境变量
这个是由于jdk自动安装的路径和我们设置的环境变量不一致导致的,所以可以在global tool中把jdk的自动安装关闭。
4.jenkins构建时,出现以下错误
用twincat打开工程文件,工程是下图这个样子
解决方法:这个是由于没有给项目分配节点造成的,仔细按照步骤三操作。
至于程序打开出现不兼容是因为.suo文件的原因,经过测试,把.vs路径下的.suo文件删除就好了,所以我在powershell脚本里边写了一个删除该文件夹的脚本。
5 Not sent to the following valid addresses:
邮箱扩展(Extended E-mail Notification)没配置好,按照邮箱配置的步骤一步一步设置即可。
6 开机后和4一样的情况,调用com失败(之前是好的)
重启电脑,断开节点机然后重连,虚拟机(节点机)运行中,节点机和主机之间的共享网络容易断掉,怀疑是这个原因。
7.powershell脚本手动能构建成果,jenkins中构建不成功
构建机手动运行的powershell还在运行中,或者出了错,并没有手动停止。
停一下手动运行的power shell脚本即可
倍福PLC部署Jenkins入门使用笔记相关推荐
- 倍福PLC的Modbus-TCP Server入门教程
倍福PLC的Modbus-TCP Server入门教程 一.实验目的 二.实验环境 三.需要的软件 四.操作步骤 五.问题 作者:SAM 一.实验目的 1.使用倍福TwinCAT3作为Modbus-T ...
- 倍福PLC和C#通过ADS通信传输Bool数组变量
在倍福PLC和C#通信,采用ADS通信,本文讲解C#如何读取和写入bool类型数组变量. 操作流程 1.1. PLC程序设计 首先定义相关的变量,如下所示,激活配置: 1.2. C#程序设计 关于C# ...
- 倍福PLC和C#通过ADS通信传输int类型变量
在倍福PLC和C#通信,采用ADS通信,本文讲解C#如何读取和写入int类型变量. 操作流程 1.1. PLC程序设计 首先定义相关的变量,如下所示,激活配置: 1.2. C#程序设计 关于C#和倍福 ...
- 倍福PLC的C++ ADS通讯定义数据类型时注意事项
在C++程序与倍福PLC通过ADS通讯时,如果C++程序中定义的变量与PLC程序中相应变量定义的数据类型不对应时,可能会出现数据读取或者写入错误,以下为调试过程中容易出错的实践总结记录. 1.向PLC ...
- 倍福PLC和C#通过ADS通信传输bool类型变量
在倍福PLC和C#通信,采用ADS通信,本文讲解C#如何读取和写入bool类型变量. 操作流程 1.1. PLC程序设计 首先定义相关的变量,如下所示,激活配置: 1.2. C#程序设计 关于C#和倍 ...
- 线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言
线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言ethercat总 线扫描枪条码测试机程序 和MES系统通讯 和Wenglor 扫描枪 RS232通讯 FB块可以直 ...
- 上位机使用C++通过ADS协议与倍福PLC通信例程-字符串变量读取
前言 建议初学者先看这一章节内容,里面包括一些基础的环境配置和项目建立流程,以后开发项目这些流程是通用的,务必掌握并熟练. 链接: 上位机使用C++通过ADS协议与倍福PLC通信例程-布尔变量的读取 ...
- C# TCP/IP通讯协议的整理(三)附带——与倍福PLC通讯
首先,需要一个和倍福PLC通讯的dll,一般厂家会提供 添加到引用后,直接创建通讯类 using System; using System.Collections.Generic; using Sys ...
- 倍福PLC串口模块使用
之前使用的EL6021模块,如果使用PLC自带的COM口,则ST代码编写方面需要做一些修改: 1.将COMIN和OUT的类型修改 修改为: 2.将功能块的调用Mode修改: 修改为: 此外,COM口设 ...
最新文章
- oracle 回收undo,oracle 释放undo空间
- python二级考time库吗_学python第十七节:time库的学习
- 计算机辅助抗体设计,计算机辅助设计提高单克隆抗体亲和力的研究
- 【OpenCV】简单高效地访问图像像素
- 你真的要收下这份大礼包!!
- Django MySQL 多用户_django使用多个数据库的方法实例
- Python 廖雪峰Python练习答案
- Matlab基于蚁群算法求解多旅行商MTSP问题
- LCD TTL/LVDS 任意分辨率 timing 时序配置及时序关系(前肩后肩)
- 自定义Behavior
- 网络创业者如何通过自己建站迈出躺赚第一步?
- LRM-00101: unknown parameter name 'location' LRM-00101: unknown parameter name 'valid_for' 粗心引起问题一例
- 抖音小店无货源前期开店需要多少资金?多久能回本?
- java根据时间判断星期几_java怎么根据日期判断是星期几
- pip install av 无法安装
- 博客文章内容导航(实时更新)
- android 音频显示器,安卓手机投屏(带声音同步)教程
- JavaWeb Filter 过滤器
- Mac-Mini 外接三个显示器教程
- eclipse svn is already locked 的解决办法