一 安装

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迁移

  1. 新服务器安装jdk文件,配置jdk中的JAVA_HOME路径
  2. 新服务器部署Jenkins
  3. 将老服务器上的jenkins_home文件下(config.xml文件,jobs文件夹,users文件夹和plugins文件夹)都复制到新服务器上,复制时两台服务器最好都停止工作。目录查看在config中。
  4. 重启新服务器jenkins服务,net stop jenkins;net start jenkins;
  5. 将老服务器当中的plugins的插件都复制到新服务器当中plugins目录当中;
  6. 重新全局设置、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入门使用笔记相关推荐

  1. 倍福PLC的Modbus-TCP Server入门教程

    倍福PLC的Modbus-TCP Server入门教程 一.实验目的 二.实验环境 三.需要的软件 四.操作步骤 五.问题 作者:SAM 一.实验目的 1.使用倍福TwinCAT3作为Modbus-T ...

  2. 倍福PLC和C#通过ADS通信传输Bool数组变量

    在倍福PLC和C#通信,采用ADS通信,本文讲解C#如何读取和写入bool类型数组变量. 操作流程 1.1. PLC程序设计 首先定义相关的变量,如下所示,激活配置: 1.2. C#程序设计 关于C# ...

  3. 倍福PLC和C#通过ADS通信传输int类型变量

    在倍福PLC和C#通信,采用ADS通信,本文讲解C#如何读取和写入int类型变量. 操作流程 1.1. PLC程序设计 首先定义相关的变量,如下所示,激活配置: 1.2. C#程序设计 关于C#和倍福 ...

  4. 倍福PLC的C++ ADS通讯定义数据类型时注意事项

    在C++程序与倍福PLC通过ADS通讯时,如果C++程序中定义的变量与PLC程序中相应变量定义的数据类型不对应时,可能会出现数据读取或者写入错误,以下为调试过程中容易出错的实践总结记录. 1.向PLC ...

  5. 倍福PLC和C#通过ADS通信传输bool类型变量

    在倍福PLC和C#通信,采用ADS通信,本文讲解C#如何读取和写入bool类型变量. 操作流程 1.1. PLC程序设计 首先定义相关的变量,如下所示,激活配置: 1.2. C#程序设计 关于C#和倍 ...

  6. 线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言

    线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言ethercat总 线扫描枪条码测试机程序 和MES系统通讯 和Wenglor 扫描枪 RS232通讯 FB块可以直 ...

  7. 上位机使用C++通过ADS协议与倍福PLC通信例程-字符串变量读取

    前言 建议初学者先看这一章节内容,里面包括一些基础的环境配置和项目建立流程,以后开发项目这些流程是通用的,务必掌握并熟练. 链接: 上位机使用C++通过ADS协议与倍福PLC通信例程-布尔变量的读取 ...

  8. C# TCP/IP通讯协议的整理(三)附带——与倍福PLC通讯

    首先,需要一个和倍福PLC通讯的dll,一般厂家会提供 添加到引用后,直接创建通讯类 using System; using System.Collections.Generic; using Sys ...

  9. 倍福PLC串口模块使用

    之前使用的EL6021模块,如果使用PLC自带的COM口,则ST代码编写方面需要做一些修改: 1.将COMIN和OUT的类型修改 修改为: 2.将功能块的调用Mode修改: 修改为: 此外,COM口设 ...

最新文章

  1. oracle 回收undo,oracle 释放undo空间
  2. python二级考time库吗_学python第十七节:time库的学习
  3. 计算机辅助抗体设计,计算机辅助设计提高单克隆抗体亲和力的研究
  4. 【OpenCV】简单高效地访问图像像素
  5. 你真的要收下这份大礼包!!
  6. Django MySQL 多用户_django使用多个数据库的方法实例
  7. Python 廖雪峰Python练习答案
  8. Matlab基于蚁群算法求解多旅行商MTSP问题
  9. LCD TTL/LVDS 任意分辨率 timing 时序配置及时序关系(前肩后肩)
  10. 自定义Behavior
  11. 网络创业者如何通过自己建站迈出躺赚第一步?
  12. LRM-00101: unknown parameter name 'location' LRM-00101: unknown parameter name 'valid_for' 粗心引起问题一例
  13. 抖音小店无货源前期开店需要多少资金?多久能回本?
  14. java根据时间判断星期几_java怎么根据日期判断是星期几
  15. pip install av 无法安装
  16. 博客文章内容导航(实时更新)
  17. android 音频显示器,安卓手机投屏(带声音同步)教程
  18. JavaWeb Filter 过滤器
  19. Mac-Mini 外接三个显示器教程
  20. eclipse svn is already locked 的解决办法

热门文章

  1. 参加门票6800的QCon大会,是怎样的体验?
  2. 【shaderforge学习笔记】 UVTile节点
  3. 在HTML中怎么表示空格
  4. 这是一首简单的小情歌
  5. php css下划线,css如何添加文字下划线样式?(代码详解)
  6. 对比前后执行计划,发现问题 - 9i
  7. 十二周四次课(6月11日)
  8. canvas画圆环(一)之渐变色,纯色
  9. java后端根据经纬度获取地址(高德地图)
  10. 计算机网络笔试面试题目大全