[原] Jenkins Android 自動打包配置

來源:互聯網
上載者:User

標籤:

一、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/jenkinsJENKINSFILENAME=jenkins.warstop(){ echo "Stoping $JENKINSFILENAME " ps -ef|grep $JENKINSFILENAME |awk ‘{print $2}‘|while read pid do kill -9 $pid echo " $pid kill" done}case "$1" instart) 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}\n‘ "$prog" exit 1 ;;esac
  • jenkins_start.sh
#!/bin/bashexport ANDROID_HOME=/usr/local/android-sdkexport GRADLE_HOME=/usr/local/gradle-2.2.1export 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/shecho "deploy begin......"apkName=$1currDay=$(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安裝目錄\conf\Catalina\localhost下建立任意檔案名稱xml檔案,比如:download.xml    <?xml version="1.0" encoding="UTF-8"?>    <Context  path="/download" docBase="D://download" crossContext="true"> </Context> 2. 修改tomcat設定檔,檔案目錄\conf\web.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

 

[原] Jenkins Android 自動打包配置(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.