zoukankan      html  css  js  c++  java
  • [原] Jenkins Android 自动打包配置(转)

    一、Jenkins自动打包配置

    目标:1. 自动打包;2. 自动上传;3. 友好下载

    1. Jenkins简介

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
    减少重复劳动,减少人工成本。
    • 持续、自动地构建/测试软件项目;
    • 监控一些定时执行的任务;

    2. Jenkins配置

    • 添加git plugin和 role插件
    • 设置人员权限,根据角色授权
    • 启动访问http://ip/8080即可,见下3.1 开机自启脚本
    • 添加git项目,配置脚本,见下3.2 项目打包脚本3.3 Apk上传脚本

    3. 自动化脚本

    3.1 开机自启脚本

    • jenkins.sh
    #! /bin/sh
    # chkconfig: 2345 10 90
    # description: jenkins ....
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    #prefix=/Users/laifeng/jenkins
    #nohup $prefix/jenkins_start.sh >> $prefix/jenkins.log 2>&1 &
    
    JENKINS_ROOT=/Users/laifeng/jenkins
    JENKINSFILENAME=jenkins.war
    
    
    stop(){
        echo "Stoping $JENKINSFILENAME "
            ps -ef|grep $JENKINSFILENAME |awk '{print $2}'|while read pid
            do
               kill -9 $pid
               echo " $pid kill"
            done
    }
    
    case "$1" in
    start)
        echo "Starting $JENKINSFILENAME "
            nohup java -jar $JENKINS_ROOT/jenkins.war --httpPort=8080 >> $JENKINS_ROOT/jenkins.log 2>&1 &
      ;;
    stop)
      stop
      ;;
    restart)
      stop
      start
      ;;
    status)
      ps -ef|grep $JENKINSFILENAME
      ;;
    *)
      printf 'Usage: %s {start|stop|restart|status}
    ' "$prog"
      exit 1
      ;;
    esac
    • jenkins_start.sh
    #!/bin/bash
    
    export ANDROID_HOME=/usr/local/android-sdk
    export GRADLE_HOME=/usr/local/gradle-2.2.1
    export JENKINS_HOME=/Users/laifeng/.jenkins
    
    /Users/laifeng/jenkins/jenkins.sh start
    /usr/local/apache-tomcat-7.0.67/bin/startup.sh
    • Mac上开机自启
    sudo defaults write com.apple.loginwindow LoginHook /path/to/script 
    
    设置/path/to/script = /Users/laifeng/jenkins/jenkins_start.sh
    

    3.2 自动化打包和上传

    项目打包脚本

    目前是直接运行Gradle命令,可脚本完成复杂需求

    ./gradlew clean assembleDebug

    Apk上传脚本

    • deploy.sh
    #!/bin/sh
    
    echo "deploy begin......"
    
    apkName=$1
    
    currDay=$(date +%Y-%m-%d)
    currTime=$(date +%H-%M-%S)
    deployPath="/Users/laifeng/jenkins/android-apks/${currDay}"
    
    #echo "$deployPath"
    
    # 创建文件夹
    if [ ! -d "$deployPath" ]; then
            mkdir "$deployPath"
    fi
    
    # 拷贝文件到目录
    workspaceApkFile="${WORKSPACE}/crazytogether/build/outputs/apk/crazytogether-debug.apk"
    deployApkFile="${deployPath}/${apkName}-${currTime}.apk"
    #echo "$workspaceApkFile"
    #echo "deployApkFile"
    
    cp ${workspaceApkFile} ${deployApkFile}
    
    echo "deploy success......"

    Tomcat 文件服务器

    1. 在tomcat安装目录confCatalinalocalhost下建立任意文件名xml文件,比如:download.xml
        <?xml version="1.0" encoding="UTF-8"?>
        <Context  path="/download" docBase="D://download" crossContext="true">
        </Context>
        
    2. 修改tomcat配置文件,文件目录confweb.xml,要将红色的false改为true
        <servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        
    3. 重启tomcat,访问http://127.0.0.1:8080/download

    遇到的问题

    • 添加git 项目无法获得权限,创建ssh key ,把本地ssh key 公钥上传到你用户的git server ,在Jenkins 添加认证,ssh 私钥。
    • 自启动脚本无法顺利执行,缺少环境变量,启动的用户不一致,启动顺序有先后,在启动脚本里添加必须的环境变量
    • 自启动的脚本是系统启动的,和登陆用户不是一个环境

    • 先在本地运行保证脚本的正确性
    • 根据Log 查看什么错误

    二、Jenkins邮件配置

    目标:1. 构建自动发邮件;2. 邮件模板;3. 组织友好下载链接;

    1. 邮件配置

    1. 添加插件:Email Extension Plugin
    2. 设置SMTP服务器:系统管理->系统设置->在Extended E-mail Notification项设置smtp service。注意设置的不是jenkins邮件通知项。
    3. 设置job邮件配置:
      • 在“增加构建后操作步骤”选择“Editable Email Notification”
      • Project Recipient List,设置接受邮箱,多个邮箱空格隔开即可
      • Content Type,选择为HTML
      • Default Subject,邮件标题
      • Default Content,邮件内容,可以写html
      • 注意:这些选项里面都可以使用“全局邮件变量”,参见链接
    4. 如何设置友好的下载链接:
      • 下载地址每次都会发生变化,主要是“时间变量”
      • “时间变量”,Day,Time需要设置到jenkins的环境变量中,这样后续执行才能共用这些变量,使用
      • “构建环境”:勾选“Inject environment variables to the build process”,在下面"Evaluated Groovy script"选项中设置groovy脚本,添加到环境变量
      • 修改“构建 Excute shell“ deploy.sh脚本,脚本中的时间变量不在是本地定义,而是使用上面设置的构建变量 ${CURR_DAY}, ${CURR_TIME}
      • 修改“Editable Email Notification”-> "Default Content",当前版本根据“时间变量”${CURR_DAY}, ${CURR_TIME}动态生产下载地址
    5. Evaluated Groovy script 添加如下脚本内容,后续的脚本中,可以引用${CURR_DAY}, ${CURR_TIME}

      TimeZone.setDefault(TimeZone.getTimeZone('Asia/Shanghai'))
      def now = new Date()
      def map = [CURR_DAY: now.format('yyyy-MM-dd'), CURR_TIME: now.format('HH-mm-ss')]
      return map
    6. Email Default Content 内容

    文件下载:<br/><hr/>
    当前版本:<a href="http://10.155.59.205:8081/download/${CURR_DAY}/branch-2.6.1-${CURR_TIME}.apk" target="_blank">点击下载</a><br/>
    历史版本:<a href="http://10.155.59.205:8081/download" target="_blank">http://10.155.59.205:8081/download</a><br/><br/>
    
    构建信息:<br/><hr/>
    项目名称:$PROJECT_NAME<br/>
    构建编号:$BUILD_NUMBER<br/>
    构建状态:$BUILD_STATUS<br/>
    触发原因:${CAUSE}<br/>
    构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/>
    构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/>
    变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>
    
    (本邮件是程序自动下发的,请勿回复!<br   >

    2. 其他问题

    • smtp邮件服务一致无法正常发生,原因可能出在,ssl授权,smtp端口等问题上
    • 时区问题默认获得的时间少8小时,需要TimeZone为“Asia/Shanghai”

    http://www.cnblogs.com/purediy/p/5160813.html

  • 相关阅读:
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    64位WIN7系统 下 搭建Android开发环境
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
  • 原文地址:https://www.cnblogs.com/softidea/p/5161444.html
Copyright © 2011-2022 走看看