Jenkins+Maven+Sonar系统持续集成环境部署以及配置
2016-07-25 09:41
661 查看
忘记密码时的处理办法:
打开忘记密码的用户文件夹,默认 /var/lib/jenkins/users ,里面就一个文件config.xml。打开config.xml,找到<passwordHash>项,
把其中的hash值先改成 "#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS"
保存并重启jenkins,此时被修改用户的密码变为 "111111",进入jenkins后再通过用户管理重新设置自己的密码即可。
另:Jenkins中复制job的方法:复制/var/lib/jenkins/jobs中的项目目录,并改成要新建的项目名称即可。
--------------------------------------------------------------------------------------------------------------
一、Jenkins介绍以及安装
什么是持续集成?
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成最早由Martin Fowler 于10年前已经提出,希望通过持续集成能够实现以下过程:
任何人在任何地点,任何时间可以构建整个项目。
在持续集成构建过程中,每一个单元测试都必须被执行。
在持续集成构建过程中,每一个单元测试都必须通过。
持续集成构建的结果是可以发布的软件包。
当以上任何一点不能满足时,整个团队的主要任务就是去解决这个问题
持续集成的核心价值
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
本文此处采用yum安装方式
除了直接java -jar jenkins.war方式,还可以用yum安装,这种方式下提供了更多的可配置选项,更适合生产环境控制jenkins的行为。
安装完成后,可用
不过,我在centos 7环境上测试下来,/etc/rc.d/init.d/jenkins这个脚本写得有点小问题,如果java不在默认目录下,会导致启动失败
定位到67行,会发现该脚本会从以下位置找java可执行文件
如果java没安装在这些目录下,启动就会失败,解决办法:把java所在的正确位置加入其中即可,比如:
注:这样处理后,还要执行一下sudo systemctl daemon-reload,然后就可以service jenkins start了,如果还出错,尝试 cd /etc/rc.d/init.d,然后sudo ./jenkins start 进一步排查。建议同学们把这个启动脚本仔细阅读一下,可以发现很多有用的信息,比如:
上面这些参数定义了配置文件、war包、pid文件、日志的位置,出问题时,我们可以直接到这些位置去查看详情。
比如:端口8080被占用了,需要更改启动端口,直接查看/etc/sysconfig/jenkins这个文件,找到
修改一下即可。
/etc/sysconfig/jenkins这个文件为jenkins的参数配置文件,比如:
构建的状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:
Successful:完成构建,且被认为是稳定的。
Unstable:完成构建,但被认为不稳定。
Failed:构建失败。
Disabled:构建已禁用。
View Code
在"构建设置"里开启设置接收邮件的邮箱时,服务器端需要启动 postfix 服务。
--------------------------------------------------
以上为构建java项目,在构建PHP项目时,需修改
1、修改新建项目的类型
2、修改构建项目时的设置
# cat /home/sunyl/jenkins/php.sh
打开忘记密码的用户文件夹,默认 /var/lib/jenkins/users ,里面就一个文件config.xml。打开config.xml,找到<passwordHash>项,
把其中的hash值先改成 "#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS"
保存并重启jenkins,此时被修改用户的密码变为 "111111",进入jenkins后再通过用户管理重新设置自己的密码即可。
另:Jenkins中复制job的方法:复制/var/lib/jenkins/jobs中的项目目录,并改成要新建的项目名称即可。
--------------------------------------------------------------------------------------------------------------
一、Jenkins介绍以及安装
什么是持续集成?
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成最早由Martin Fowler 于10年前已经提出,希望通过持续集成能够实现以下过程:
任何人在任何地点,任何时间可以构建整个项目。
在持续集成构建过程中,每一个单元测试都必须被执行。
在持续集成构建过程中,每一个单元测试都必须通过。
持续集成构建的结果是可以发布的软件包。
当以上任何一点不能满足时,整个团队的主要任务就是去解决这个问题
持续集成的核心价值
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
本文此处采用yum安装方式
除了直接java -jar jenkins.war方式,还可以用yum安装,这种方式下提供了更多的可配置选项,更适合生产环境控制jenkins的行为。
比如:端口8080被占用了,需要更改启动端口,直接查看/etc/sysconfig/jenkins这个文件,找到
/etc/sysconfig/jenkins这个文件为jenkins的参数配置文件,比如:
JENKINS_USER=
"jenkins"
JENKINS_HOME=
"/var/lib/jenkins"
JENKINS_AJP_PORT=
"8009"
JENKINS_DEBUG_LEVEL=
"5"
JENKINS_ENABLE_ACCESS_LOG=
"no"
构建的状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:
Successful:完成构建,且被认为是稳定的。
Unstable:完成构建,但被认为不稳定。
Failed:构建失败。
Disabled:构建已禁用。
#!/bin/bash # # Usage: start.sh [debug] # cd `dirname $0` BIN_DIR=`pwd` #cd .. DEPLOY_DIR=`pwd` APPNAME=`ls $DEPLOY_DIR | grep jar` LOGS_DIR=log STDOUT_FILE='log/console.log' if test -n "${JAVA_HOME}"; then if test -z "${JAVA_EXE}"; then JAVA_EXE=$JAVA_HOME/bin/java fi fi if test -z "${JAVA_EXE}"; then JAVA_EXE=java fi ${JAVA_EXE} -version >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "ERROR: Not Found java installed!" exit 1 fi if [ -z "$LOGS_DIR" ]; then LOGS_DIR=$DEPLOY_DIR/log fi if [ ! -d $LOGS_DIR ]; then mkdir $LOGS_DIR fi if [ ! -d $LOGS_DIR ]; then echo "ERROR: Please check LOGS_DIR=$LOGS_DIR is ok?" exit 1 fi STDOUT_FILE=$LOGS_DIR/console.log echo "Logs_dir: ${STDOUT_FILE}" JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true " JAVA_DEBUG_OPTS="" if [ "$1" = "debug" ]; then JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n " fi JAVA_JMX_OPTS="" if [ "$1" = "jmx" ]; then JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false " fi JAVA_MEM_OPTS="" BITS=`${JAVA_EXE} -version 2>&1 | grep -i 64-bit` if [ -n "$BITS" ]; then JAVA_MEM_OPTS=" -server -Xmx2048m -Xms2048m -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 " else JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC " fi echo "Starting the $SERVER_NAME ..." nohup ${JAVA_EXE} $JAVA_SPRING_OPTS $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -jar $APPNAME > $STDOUT_FILE 2>&1 & echo "OK!"
View Code
在"构建设置"里开启设置接收邮件的邮箱时,服务器端需要启动 postfix 服务。
--------------------------------------------------
以上为构建java项目,在构建PHP项目时,需修改
1、修改新建项目的类型
2、修改构建项目时的设置
# cat /home/sunyl/jenkins/php.sh
#!/bin/bash #添加环境相关变量 source /home/sunyl/jenkins/openrc #使用的hosts文件 hosts=`echo $env|awk -F '-' '{print $1}'` #以时间命名目录名称 time=`date +"%Y%m%d-%H%M%S"` #目标应用启动路径 work_dir=/data/ifengsite/htdocs/$appname package=$workspace/../$appname.tar #目标应用保留目录 releases_dir=/data/ifengsite/releases/$appname #建立软连接源目录 work2_dir=$releases_dir/$time ansible -i /home/sunyl/jenkins/$hosts $env -m shell -a "mkdir -p $work2_dir" -u www cd $workspace/../ && rm -rf $appname.tar cd $workspace && tar cf $package * ansible -i /home/sunyl/jenkins/$hosts $env -m copy -a "src=$package dest=$work2_dir" -u www ansible -i /home/sunyl/jenkins/$hosts $env -m shell -a "cd $work2_dir && tar xf $appname.tar && rm -rf $appname.tar" -u www ansible -i /home/sunyl/jenkins/$hosts $env -m shell -a "ln -sfn $work2_dir $work_dir" -u www ansible -i /home/sunyl/jenkins/$hosts $env -m shell -a "/etc/init.d/php-fpm restart" -u www
相关文章推荐
- python模块是什么
- DELPHI存储过程调用
- Node.js 创建的第一个应用
- LIS之贪心加二分,,求最大长---记录路径(待检验--欢迎提供数据)
- C语言课程设计(这个没在老师给定的题目内)——实用的作答题目小代码
- iOS中获取各种文件的目录路径的方法
- URI URL URN之间的区别
- 测试BASHshe'll
- 会话保持功能介绍
- 最基础的java面试
- Error:(4, 0) Gradle DSL method not found: 'classpath()' Possible causes: The project 'workspace-64'
- Delphi 快捷键
- linux su和sudo命令的区别
- iOS开发使用半透明模糊效果方法整理
- 线程、多线程与线程池
- 关键字
- js获取select标签选中的值
- PAT 乙级1004. 成绩排名 (JAVA版)
- LeetCode[343] Integer Break
- DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等