设为首页 收藏本站
查看: 968|回复: 0

[经验分享] 构建Jenkins自动化编译管理环境

[复制链接]

尚未签到

发表于 2018-1-9 06:30:46 | 显示全部楼层 |阅读模式
  今天研究了一下Jenkins,有了一个粗浅的认识,顺手把构建的过程说一下,后续慢慢补充:
  (1)Secure CRT 连接到Linux服务器
  要注意的一点是,要搞好一个文件传输的路子,否则不好传东西。这里用Linux 命令sz(从服务器下载)和rz(上传到服务器)可以实现,但是需要手动安装一下:
  

sudo yum install lrzsz -y  

  当然了,如果不是RHEL也可以用别的命令安装,或者直接下载lrzsz压缩包来编译安装。
  使用这个终端连接服务器的时候,默认可能是Delete键删除,而不是Backspace,可以配置一下:

  在“Emulation” 中选择“Linux”,然后这里的“Other mappings” 里的两个钩都选上。
  (2.1)安装JDK和Tomcat
  虚拟服务器是RHEL,已经安装了一个默认的OpenJDK,我对这个OpenJDK印象不好,决定安装一个Oracle JDK1.8,并且指定到这个版本上。
  JDK下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  Tomcat下载链接:http://tomcat.apache.org/download-80.cgi
  

#mv jdk1.8.0_131 /usr/local        // 把解压后的压缩包移动到软件安装目录  #mv apache-tomcat-8.5.14 /usr/local
  #ln -s /usr/local/apache-tomcat-8.5.14 /usr/local/tomcat    // 建立一个方便的快捷方式
  

  vim /etc/profile 命令来配置环境变量,让所有用户都生效:
  

JAVA_HOME=/usr/local/jdk1.8.0_131  
CLASSPATH
=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
PATH
=$PATH:$JAVA_HOME/bin  
CATALINA_HOME
=/usr/local/tomcat  
CATALINA_OPTS
="-server -Xms528m -Xmx528m -XX:PermSize=256m -XX:MaxPermSize=358m"  
CATALINA_PID
=$CATALINA_HOME/catalina.pid
  
export JAVA_HOME>  

  source /etc/profile 命令使设置生效,调用如下命令检查Java配置:
  

[iyunv@IDD-Jenkins-Redmine-jenkins-online001-bjdx ~]# java -version  
java version
"1.8.0_131"  
Java(TM) SE Runtime Environment (build
1.8.0_131-b11)  
Java HotSpot(TM)
64-Bit Server VM (build 25.131-b11, mixed mode)  

  (2.2)安装其他编译工具
  Gradle:官网下载Gradle安装包
  Ant:Ant官网下载压缩包

  (2.3)安装Android SDK
  这里需要强调一个点,通过Android Studio安装的Android SDK都是新版的,最新版的Android SDK中把Ant工具干掉了,这样的话有的工程编译依赖于SDK中的tools/ant就会找不到了。我们只好自己在Linux环境或者MacOSS上手动安装Android SDK。
  这里写一个MacOSX上靠谱的安装方法:
  <1>下载地址:http://down.tech.sina.com.cn/page/45703.html     或者    http://mac.softpedia.com/get/Developer-Tools/Google-Android-SDK.shtml
  <2>解压后进入tools目录,输入命令:./android sdk   请出SDK Manager的图形界面。
  <3>选择需要的SDK版本和Tools等。
  (3)启动与停止Tomcat
  

[iyunv@IDD-Jenkins-Redmine-jenkins-online001-bjdx tomcat]# cd $CATALINA_HOME/bin  
[iyunv@IDD
-Jenkins-Redmine-jenkins-online001-bjdx bin]# ./startup.sh  
Using CATALINA_BASE:
/usr/local/tomcat  
Using CATALINA_HOME:
/usr/local/tomcat  
Using CATALINA_TMPDIR:
/usr/local/tomcat/temp  
Using JRE_HOME:
/usr/local/jdk1.8.0_131
  
Using>/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar  
Using CATALINA_PID:
/usr/local/tomcat/catalina.pid  
Existing PID
file found during start.  

[iyunv@IDD-Jenkins-Redmine-jenkins-online001-bjdx bin]# ps -ef|grep java  

  root 1215 1 99 05:49 ? 00:57:41 /data/usr/local/jdk1.8.0_131/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
  root      5122  4466  0 06:08 pts/0    00:00:00 grep java
  

[iyunv@IDD-Jenkins-Redmine-jenkins-online001-bjdx bin]# kill -9 1215     // 强行终止Tomcat  

  (4)安装Jenkins
  链接地址:https://jenkins.io/download/
  下载.war包就行了,拷贝到Tomcat中的webapps目录中:
  

#cp jenkins.war $CATALINA_HOME/webapps  

  (5)访问Jenkins
  默认访问链接:localhost:8080/jenkins
  (6)配置Jenkins
  虽然我目前还不熟练,但是我简单测试了下,我觉得最重要的使用方法就是在:“新建” --> “构建一个自由风格的软件项目”,这其中最重要的就是:
  <a> 构建触发器:告诉什么情况下,或者什么周期来进行编译工作
  <b> 构建:可以执行Linux/Windows shell脚本文件
  <c> 构建后操作:可以发邮件等等
  (7)配置Jenkins用户权限
  我看网上很多都是配置矩阵权限策略,我找了半天没找到,也没搜索到原因。我在插件中心找到了一个名为“Matrix Authorization Strategy Plugin”的插件,安装上之后果然就有了。
  如果因为权限配置搞错了导致管理员无法登陆的话,参考这个页面:Jenkins遇到问题一:jenkins配置权限不对导致无法登陆或者空白页面解决办法
  注意,“匿名用户”不要赋予任何Read权限,否则会出现未登录的情况下读取到了用户列表,进而引起弱口令攻击。

  权限的含义表:

  (8)设置Jenkins邮件发送
  Jenkins自带的“邮件通知”功能在 “系统管理” --> “系统设置” 里面,是还是比较简单的,也好用。但是功能不够丰富,一般想要自定义邮件内容的话,就需要利用 “Email Extension Plugin” 插件。
  参考这个Blog:Jenkins学习四:Jenkins 邮件配置

  这里要点击高级选项,配置上用户名和密码,用户名不要带邮箱后缀。
  (9)文件压缩
  7z压缩格式拥有众多优点,具有极高的压缩比率,如果你还不了解,请看文章:7z格式、LZMA压缩算法和7-Zip详细介绍。
  在Redhat系列服务器上可以用命令安装:yum install p7zip
  压缩命令的例子:7za a -r $COMPRESS_FILE_NAME $TEMP_FOLDER_1/* $TEMP_FOLDER_2/*
  (10)关于服务器时区
  在用date命令获取Linux服务器时间时发现,服务器时间总是格林威治时间而不是当地时间。我查了好多方法都没搞定,最后发现直接修改时区偏移是有效的:
  

[root!~]# vi ~/.bash_profile  

  
在文件内增加一句:export TZ
='CST-8'  

  
[root
!~]# date -R  
Sat,
10 Jun 2017 23:33:01 +0800        // 这里+08时区就是对的!  

  (11)关于中文乱码
  用Jenkins发邮件的时候,发现读取了本地文件内容中的中文都是乱码,找了半天原因也没找到,但是我搜索到的思路就是说Jenkins显示的是JVM的编码,跟文件内容的编码不匹配。看Jenkins中“系统管理”->“系统信息”中,显示的文件编码也是ANSI之类的,也不知道怎么改,看了下文本文件的编码,确实也不是UTF-8的。
  修改Jenkins界面中显示的编码方法:试了添加LOCALE、LANG、JAVA_TOOL_OPTIONS等等(Jenkins)环境变量都不管用。后来才发现原来是TOMCAT启动时需要添加一个参数:-Dfile.encoding=UTF-8,可以写到环境变量设置文件里面:

  接下来要把文件编码也改成一样的UTF-8(无BOM),这样就没问题了。

  发版邮件模板中可以读取服务器上的文件内容:

  (12)关于Windows平台下命令行编译
  在Windows平台下的自动化编译其实比较简单,用微软的VisualStudio自动化编译工具MsBuild就可以了,安装了.Net framework之后就有了,默认安装路径为:C:\Windows\Microsoft.NET\Framework\v4.0.30319
  其实我看了下,如果安装了多个版本的.NET ,每一个目录下都有MsBuild的,用最新版的就好了吧。如果打开VisualStudio Tools的“命令提示”,也是最新版的排在前面。
  输入:MsBuild /?
  可以看到详细的参数说明,还有一个编译的例子: MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
  (13)链接Windows子节点
  条件:
  1、在Windows子节点上安装JDK,配置好JAVA_HOME;
  2、下载jenkins.war,用下面的命令启动服务:
  

java -jar jenkins.war  

  3、访问localhost:8080,进行插件安装,系统设置,找到“Install as windows service”把Jenkins安装成Windows服务。
  4、在Windows子节点上访问主机Jenkins,然后参考官方页面建立节点链接:https://wiki.jenkins-ci.org/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines+on+Windows
  5、可能“Launch method”中并没有推荐的“Launch slave agents via Java Web Start”,原因是“Configure Global Security”中的“TCP port for JNLP agents”被禁用了,选择“随机选取”并勾选“Java Web Start Agent Protocol/3”
  6、在Windows子节点上按照文档中的方法操作即可,在弹出的Success对话框中选择“File”->“Install as Windows service”,这样才能方便使用,否则关闭对话框服务就停止了。
  7、【坑】在Windows子节点上执行Bat脚本,里面使用git pull报错:提示没有SSH权限被服务器拒绝(直接在CMD是可以的)。这个问题是其他两个平台都没遇到的,花了好久找到原因是因为我安装的Jenkins都是以服务方式运行,不是以Administrator身份登录的,所以读取不到.ssh密钥文件。果然,在Windows服务里面找到Jenkins相关的两个,都设置为./Administrator身份登录就可以执行git pull之类的操作了。

  (14)链接MacOSX子节点
  MacOSX系统中自带了SSH,所以连接起来比较简单,参考这个就行了:

  (15)MacOSX上Root用户没有修改关键目录的权限
  一般来讲,类Unix系统中root用户是有最高权限的,不过MacOSX系统做了升级优化,限制了默认的root用户权限,还需要手动取消这个限制才行。
  (16)FTP工具
  这里用Linux上流行的vsftpd服务来支持,原来一直没搞清楚那个chroot_***配置的作用,这里有一篇文章解释的比较详细:vsftp配置文件详解,给我关键解惑的点是:

在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO(NO)
设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list
用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_local_user=YES/NO(NO)
用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433128-1-1.html 上篇帖子: jenkins 安卓打包生成二维码下载 下篇帖子: jenkins安全内容配置策略
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表