在Ubuntu系统上利用Tomcat+Jenkins搭建Android源码编译环境

文章目录

    • 前言
    • 相关知识
      • Ubuntu开机启动
      • Shell脚本
      • Tomcat
      • 部署Jenkins到Tomcat
      • 编写Android系统编译脚本
        • 此脚本为编译全志A33 Android系统,仅供参考
    • 相关问题
    • 参考

前言

Jenkins是一套软件自动集成管理工具,可以减少人工手动编译集成的工作量,而且能够保证编译集成结果的一致性

相关知识

Ubuntu开机启动

ubuntu开机启动有两种方式:

  • 编辑rc.local脚本
    ubuntu开机后会执行rc.local脚本,因此可以在rc.local文件中直接添加启动脚本。添加在exit 0之前
  • 添加开机启动项
    如果要添加开机启动执行的脚本的脚本文件,可以将脚本文件拷贝或软连接到 /etc/init.d/ 目录下,然后通过 update-rc.d xxx defaults NN(NN为启动顺序)
    注: 启动顺序为0-99,如果脚本需要用到网络,则NN需设置一个比较大的数字,如99
    参考博客(http://blog.csdn.net/hcx25909/article/details/9068497)

Shell脚本

Tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。–[百度百科]
(https://baike.baidu.com/item/tomcat/255751?fr=aladdin)
###Jenkins
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。–[百度百科]
###Jenkins简单配置构建
##配置步骤
###下载tomcat和Jenkins
tomcat下载地址 Apache tomcat
Jenkins下载地址 Jenkins
###配置tomcat开机自动启动

  • 方法一
    在/etc/rc.local 文件中添加 /work/tomcat/apache-tomcat-9.0.0.M22/bin/startup.sh /work/tomcat/apache-tomcat-9.0.0.M22为tomcat安装路径
  • 方法二
    在*/etc/init.d/*目录下新建一个文件:命名为tomcat
    在tomcat中添加如下内容
#!/bin/sh
# chkconfig: 345 99 10
# description: Auto-starts tomcat
# /etc/init.d/tomcat
# Tomcat auto-start
# Source function library.
#. /etc/init.d/functions
# source networking configuration.
#. /etc/sysconfig/network
RETVAL=0
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export CATALINA_HOME=/home/jenkins/tomcat/apache-tomcat-9.0.0.M22
export CATALINA_BASE=/home/jenkins/tomcat/apache-tomcat-9.0.0.M22
start()
{
        if [ -f $CATALINA_HOME/bin/startup.sh ];
          then
            echo $"Starting Tomcat"
                su - jenkins -c $CATALINA_HOME/bin/startup.sh
            RETVAL=$?
            echo " OK"
            return $RETVAL
        fi
}
stop()
{
        if [ -f $CATALINA_HOME/bin/shutdown.sh ];
          then
            echo $"Stopping Tomcat"
                su - jenkins -c $CATALINA_HOME/bin/shutdown.sh
            RETVAL=$?
            sleep 1
            ps -fwwu tomcat | grep apache-tomcat|grep -v grep | grep -v PID | awk '{print $2}'|xargs kill -9
            echo " OK"-
            # [ $RETVAL -eq 0 ] && rm -f /var/lock/...
            return $RETVAL
        fi
}

case "$1" in
 start)
        start
        ;;
 stop)
        stop
        ;;

 restart)
         echo $"Restaring Tomcat"
         $0 stop
         sleep 1
         $0 start
         ;;
 *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac
exit $RETVAL

其中配置的相关环境环境变量,如:JRE_HOME,JAVA_HOME,CATALINA_HOME根据实际环境变量路径填写。
以指定用户启动tomcat:su - jenkins -c $CATALINA_HOME/bin/shutdown.sh
注意:在/etc/init.d/目录下添加tomcat文件以后使用命令行sysv-rc-conf tomcat on配置tomcat开机启动
验证tomcat配置开机自启动是否成功:

  1. 重启系统
  2. 在浏览器中输入xxx.xxx.xxx:8080 xxx.xxx.xxx为服务器IP地址,8080为tomcat默认端口

部署Jenkins到Tomcat

将jenkins.war拷贝到tomcat的webapps下,然后重启系统
jenkins版本和jdk版本关系
在Ubuntu系统上利用Tomcat+Jenkins搭建Android源码编译环境_第1张图片

编写Android系统编译脚本

此脚本为编译全志A33 Android系统,仅供参考

#!/bin/bash
#下载并编译lichee
WORKSPACE_PATH=/home/jenkins/jenkins/workspace/irjk 
LICHEE_PATH=${WORKSPACE}/lichee
ANDROID_PATH=${WORKSPACE}/android

if [ -d "${LICHEE_PATH}" ];then
	rm -rf ${LICHEE_PATH}
fi
mkdir ${LICHEE_PATH}

cd ${LICHEE_PATH}
pwd
repo init -u [email protected]:A33_yfxt/manifests.git -b br_irjk -m lichee.xml
repo sync
repo forall -c git checkout -b br_irjk origin/br_irjk
cd ${LICHEE_PATH}/brandy
pwd
./build.sh -p sun8iw5p1
cd ${LICHEE_PATH}
./build.sh -p sun8iw5p1_android -k linux-3.4 -b d7
#下载并编译android

cd ${WORKSPACE_PATH}
if [ -d "${ANDROID_PATH}" ];then
	rm -rf ${ANDROID_PATH}
fi
mkdir ${ANDROID_PATH}
cd ${ANDROID_PATH}
pwd
#下载android源码
repo init -u [email protected]:A33_yfxt/manifests.git -b br_irjk -m android.xml
repo sync
repo forall -c git checkout -b br_irjk origin/br_irjk
#编译android源码
source build/envsetup.sh && lunch astar_d7-user
extract-bsp
make -j8 && pack

#拷贝
cd ${WORKSPACE}
TIME=$(date "+%Y%m%d%H%M%S")
echo "now ${TIME}"
IMAGE_PATH=${LICHEE_PATH}/tools/pack
IMAGE_NAME=A33_irjk_android_user_uart0
DEST_PATH=/work/public/image
if [ -d "${DEST_PATH}" ];then
	echo "${DEST_PATH} already exists"
else
	echo "mkdir ${DEST_PATH}"
	mkdir ${DEST_PATH}
    chmod 777 ${DEST_PATH}
fi

mv ${IMAGE_PATH}/${IMAGE_NAME}.img ${DEST_PATH}
mv ${DEST_PATH}/${IMAGE_NAME}.img ${DEST_PATH}/${IMAGE_NAME}_${TIME}.img
echo "copy successfully"

相关问题

  • 权限问题
    Linux系统启动时默认是以超级管理员权限执行相关启动脚本的。因此,如果按照上述Tomcat自启动中的方法一来启动的话,会导致tomcat是以root账户启动的,最终会导致Jenkins的启动也是由root账户启动的,在编译android系统的时候会出现权限的问题。
    为了解决权限问题,需要在开机时以指定账户启动tomcat,参考tomcat开机自启动中的方式二,通过shell命令 su - 账户名 -c command 的方式来启动tomcat。
    注意:如果方式二中没有使用 su - 账户名 -c 来执行的话,tomcat还是会以root账户启动。

  • shell脚本中 #!bin/sh#!bin/bash 的区别

参考

linux (ubuntu) 下设置 tomcat 随系统自动启动

你可能感兴趣的:(读书笔记,开发工具)