Jenkins安装与使用

安装

安装&运行

直接使用Java进行启动:

这样可以自定义Jenkins的启动用户、工作和文件存放目录。

groupadd -g 498 jenkins
useradd -g jenkins -u 498 -s /bin/false -d /data/jenkins -c "Continuous Integration Server" -M jenkins
mkdir -p /data/jenkins/{app,logs,.m2}
cp -p jenkins.war /data/jenkins/app/
chown -R jenkins:jenkins /data/jenkins
su - jenkins -s /bin/bash -c "cd /data/jenkins/app ; java -server -Xms128m -Xmx1024m -jar jenkins.war -DJENKINS_HOME=/data/jenkins --httpPort=8080 --logfile=/data/jenkins/logs/jenkins.$(date +%Y-%m-%d).log > /dev/null" &
tailf /data/jenkins/logs/jenkins.log

mvn用户配置文件

建立配置文件,设置mvn仓库使用本地nexus私服。

vim /data/jenkins/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<profiles>
  <profile>
    <id>nexus</id>
    <properties>
      <maven.compiler.source>1.7</maven.compiler.source>
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
    </properties>
    <repositories>
      <repository>
        <id>local-nexus</id>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <id>local-nexus</id>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
      </pluginRepository>
    </pluginRepositories>
  </profile>
</profiles>
<activeProfiles>
  <activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>

由于我们不直接在全局的settings.xml中插入<repositories>元素,这里添加了一个profile并使用<activeProfile>元素自动将这个profile激活。这里的local-nexus仓库指向了Nexus中默认的“maven-public”仓库组,即所有该仓库组包含的仓库都能供我们使用。此外,通过<releases>和<snapshots>元素激活了Maven对于仓库所有类型构件下载的支持,当然你也可以调节该配置,比如说禁止Maven从Nexus下载snapshot构件。

并且设置指定了maven构建所使用JAVA编译器 -source 和 -target 的版本为1.7。

使用该配置,Maven就会从Nexus服务器下载构件了。

初始化

第一次启动时,日志中会提示程序需要初始化操作,并会生成一段随机密码,用于进行安装操作:

其会在执行用户的宿主目录下创建.jenkins隐藏目录,里面存放相关配置信息。

访问其监听地址进行操作:http://ipaddr:8080/

输入上面生成的密码后继续。

进入自定义Jenkins页面,第一个选项是安装建议插件(使用最多的),第二个选项是自己选择需要安装的插件。根据需要选择即可,然后其会联网进行插件下载安装:

完成之后 ,会提示创建初始管理员账号:

创建好后即完成安装:

Tips:初始化完成之后,用于初始化的密码文件会自动删除。

设置为服务

init.d方式:

vim /etc/init.d/jenkins
#!/bin/bash
# Jenkins Automation Server.

# chkconfig: 2345 80 30
# description: Jenkins is a Open Source Automation Server.
# processname: java

### BEGIN INIT INFO
# Provides: jenkins
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop jenkins
# Description: Jenkins is a Automation Server.
### END INIT INFO

# Defined Color
Red='\033[31m\033[1m'
Green='\033[32m\033[1m'
Null='\033[0m'

#----Script Config Begin----
SrN="Jenkins"
runuser=jenkins
basedir=/data/jenkins
bindir=/usr/local/jdk1.8.0_162/bin/
execute=${bindir}/java
args="-server -Xms128m -Xmx1024m -jar jenkins.war -DJENKINS_HOME=${basedir} --httpPort=8080 --logfile=${basedir}/logs/jenkins.$(date +%Y-%m-%d).log"
pidpath="/tmp/hsperfdata_jenkins/"
#----Script Config End------
if [ ! -x "${execute}" ];then
	echo "Can't execute ${execute} from dir ${bindir}"
	exit 1
fi
# Load Env
source /etc/profile

chkpid () {
	cd ${pidpath}
	if [ -f "$(ls)" ];then
		pid=$(ls)
		pidfile="${pidpath}/${pid}"
		if [ ! -z "${pid}" ];then
			pidtest=`ps -p ${pid} -o args | grep "${args}" | tail -1`
			if [ -z "$pidtest" ];then
				rm -f "${pidfile}"
				echo -e "${Red}Removed stale pid file: ${pidfile}${Null}"
			fi
		fi
	fi
}

Start () {
	chkpid
	[ -f "${pidfile}" ] && echo -e ${SrN} Already ${Green}Running${Null}\(PID: ${pid}\) && exit 1
	echo -n "Starting ${SrN}: "
	su - ${runuser} -s /bin/bash -c "cd ${basedir}/app ; ${execute} ${args} > /dev/null" &
	RETVAL=$?
	[ $RETVAL -eq 0 ] && echo -e ${Green}Success${Null} || echo -e ${Red}Failure${Null}
	return $RETVAL
}

Stop() {
	chkpid
	if [ -f "${pidfile}" ];then
	 echo -n "Stoping ${SrN}: "
	 kill ${pid}
	 RETVAL=$?
	 [ $RETVAL -eq 0 ] && rm -f $pidfile
	 [ $RETVAL -eq 0 ] && echo -e ${Green}Success${Null} || echo -e ${Red}Failure${Null}
	 return $RETVAL
	else
	 echo -e "${Red}${SrN} is not running.${Null}"
	fi
}

Status() {
	chkpid
	if [ -f "${pidfile}" ];then
	 echo -e ${SrN} ${Green}RUNNING${Null} \(PID: ${pid}\)
	else
	 echo -e ${SrN} ${Red}DEAD${Null}
	fi
}

case "$1" in
    'start' )
       Start
        ;;
    'stop' )
       Stop
        ;;
    'status')
        Status
        ;;
    'restart' )
       Stop
       Start
		;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
		exit 2
        ;;
esac

exit $?
chmod +x /etc/init.d/jenkins
chkconfig --add /etc/init.d/jenkins
service jenkins start
service jenkins status

发表评论

error: Content is protected !!