Android Jenkins自動化構建之參數化構建、多分支構建(二)

上篇,Android之Jenkins自動化打包流程及問題處理(一) 完成Jenkins最基本的自動化國建過程。
但是,我們正式的項目往往需要配置很多的參數,設置等等。所以,最進本的打包,是無法滿足我們的要求的。
這篇文章,就說明下,自動化打包的其他配置,參數化構建,多分支構建等等。

本文內容:

一、參數化構建

在新建的項目裏,點擊左側配置
在這裏插入圖片描述

進入配置頁面,【General】-勾選【參數化構建過程(This project is parameter)】這個選項。

點擊添加參數,可以看到好幾個選項,有boolean類型參數,String類型參數,選擇的參數等等,用哪個類型的參數,需要根據我們的需求來選擇。
在這裏插入圖片描述
現在,我們來模擬2個場景,來看下,這些參數怎麼使用。

配置Gradle打包命令

1,一般的Android項目,都會有測試環境,開發環境,生產環境。
我們會配置productFlavors,如下

Android{
	flavorDimensions "env"
    productFlavors {
        online {
            buildConfigField "String", "API_HOST", "\"${cfg["apiUrlRelease"]}\""
            dimension "env"
        }
        //開發版本
        dev {
            buildConfigField "String", "API_HOST", "\"${cfg["apiUrlDev"]}\""
            dimension "env"
        }
        //測試版(本地)
        local {
            buildConfigField "String", "API_HOST", "\"${cfg["apiUrlDebug"]}\""
            dimension "env"
        }
    }
}

通常,這樣的情況,我們本地打包的命令是這樣

gradlew assembleOnlineRelease //生產環境
gradlew assembleDevRelease //開發環境

這種情況的話,我們打不同環境的包,就需要 assebleXXXRelease這樣的命令。
這樣,我們就需要添加一個帶選擇的參數(環境就幾個,是固定的)來跟我們的task命令關聯起來,。

說幹就幹。

  • 我們添加一個選項參數
    在這裏插入圖片描述
    這裏的3個選項,對應我們項目裏面的3個測試環境(選項跟build.gradle裏面的環境名字(local,dev,online)需要一樣)。

  • 修改構建的task
    在這裏插入圖片描述
    這裏,我們使用了 ${API_HOST} 替換了打包時候(gradlew assembleXXXRelease),中間的那個環境(XXX)。

這樣的話,在構建項目的時候,就可以通過選項來構建不同環境的包。

配置項目APP的屬性

上面,我們是通過參數來配置打包命令的,並沒有涉及到修改APP裏面的屬性。

這樣,我們強行加戲,再來一個動態添加版本名(versionName),這個屬性。

添加參數,其實,在構建的時候會替換掉項目gradle.properties裏面的相同的參數。所以,我們在Jenkins裏面添加參數後,需要在gradle.properties裏面也添加相應的參數,這樣,我們纔可以使用。

知道了,怎麼替換後,我們的步驟就是:

  • 1,在Jenkins裏,添加String參數,在構建的時候寫入進去
  • 2,在Android項目的gradle.properties裏添加一個相同的參數
  • 3,在build.gradle裏面引用gradle.properties的參數
  • 4,這樣能行嗎。。。。

1, 我們先在添加一個String參數的選項了。如下
在這裏插入圖片描述
2,在項目的gradle.properties裏面也添加這個APP_VERSION_NAME參數

gradle.properties

# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.

APP_VERSION_NAME=2.0.0

3,我們在項目裏面引用這個參數

在app的module裏的build.gradle引用這個版本名

build.gradle

android {
	...
    defaultConfig {
        versionName APP_VERSION_NAME
		...
	}
	...
}

4,這樣能行麼?

事實上,我們做完了上面的3個步驟的話,還是不行的。
我們需要把Jenkins配置的參數,映射到代碼裏。

步驟:
配置 - 構建 - 高級 - 勾選Pass all job parameters as Project properties
如下圖
在這裏插入圖片描述
到這裏就可以構建我們的參數了

最後,回到Jenkins裏我們創建的項目裏。點擊Build with Parameters
在這裏插入圖片描述
點擊完成後,會讓我們配置,我們的參數
在這裏插入圖片描述
當我們配置完成後,就可以開心的構建我們的項目了。

二、多分支構建

在添加完了參數化構建後,項目確實方便了不少。

但是,我們發現,我們的項目有很多分支,難道說,每個分支都要創建一個項目麼,這不科學啊。

後來發現,我們可以通過Git Parameter這個插件,可以實現多個分支的切換。

安裝Git Parameter插件

系統管理 - 插件管理
在這裏插入圖片描述
進去後,點擊可用插件,搜索git parameter
在這裏插入圖片描述
然後,安裝
在這裏插入圖片描述

安裝完成

參數化構建,添加Git Parameter參數

參數化構建 - 添加Git Parameter
在這裏插入圖片描述
看下Git Parameter需要設置哪些參數
在這裏插入圖片描述
Parameter Type 選擇Branch or Tag,這樣,分支跟tag都可以顯示選擇。
默認分支,選擇的還是master
到這裏,參數就填寫完了。

修改源碼管理,默認的master分支

修改我們在設置git地址時候,添加的默認的分支(*/master)

在這裏插入圖片描述
這裏的指定分支用我們剛纔構建 的參數替換(前面要加上‘$’符號)

開始構建

返回,Jenkins的項目裏面,點擊Build with Parameters

我們就看到了,我們遠程的分支就都顯示出來了。

在這裏插入圖片描述

現在,我們就可以自由的選擇分支來打包了。

三、定時構建

1,我們還是進入項目,選擇,左側的配置

在這裏插入圖片描述

2,選擇構建觸發器下面的Build periodically(定時構建)

在這裏插入圖片描述
Build periodically表示週期性的對項目進行構建。到指定的時間,觸發構建任務。

3,填寫定時構建的規則

在這裏插入圖片描述
定時構建規則:
定時構建有5顆星組成。每個星代表不同的含義。


* * * * *

  • 第一顆*,表示分鐘,取值範圍0~59
  • 第二顆*,表示小時,取值範圍0~23
  • 第三顆*,表示一月的第幾天,取值1~31
  • 第四顆*,表示第幾個月,取值1~12
  • 第五顆*,表示一週的第幾天,取值0~7(0和7都是週日)

1,10分鐘構建一次
H/10 * * * *
2,每2小時構建一次
H H/2 * * *
3,每月的1-10號,每個2天構建一次
H H 1-10/2 * *
4,每週的週一,週五的下午8點,構建一次
H 18 * * 1,5

1,多個指定的時間點,用逗號“,”隔開(比如,H H * * 1,3,5)
2,“/”,表示間隔時間,每隔多長時間,執行一次
3,“1-10”,表示取值返回,連續的日期(分?時?天?)來構建

填寫好構建時間後,下面就會顯示出來優化的規則和執行的時間。

到這裏,這3種構建就說完啦。
Jenkins裏面的功能還有好多好多,push自動構建,構建完成自動上傳到蒲公英,釘釘提示,發郵件等等等等。後面,等嘗試完了,在補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章