一、環境搭建
注意:以下安裝最好不要安裝在C:\Program Files (x86)目錄下,可能有32位和64位之分
1.安裝jdk
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
在Windows中設置Java環境變量
避免裝在C:\Program Files (x86)目錄下
java –version
檢測是否安裝成功
2.安裝Android SDK
下載位置:https://developer.android.com/studio/index.html?hl=en#downloads
提取下載的zip文件,將其移動到適當的位置,然后運行SDK Manager.exe。
設置環境變量
注意:android-sdk-windows\platforms 下的api版本
3.安裝nodejs
可以安裝nvm管理node版本
通過nvm安裝各版本的node,每個node路徑下要自己下載相對應的npm
4.安裝cordova
打開Node.js命令提示符並運行npm install -g cordova @ 7.1.0
安裝完成后,請確認從Node.js命令提示符處將PATH傳遞給cordova。
> cordova -v
7.1.0
5.Git安裝
下載位置:https://git-scm.com/
根據要求下載相應版本
針對此次的jenkins。可能需要安裝1.9.4,更高的版本中可能會少ssh.exe等文件
6.將公共密鑰注冊到GitLab
打開git bash
本地設置
① git config --global user.name xxxxx
② git config --global user.email lifei@cn.xxx.com
③ 創建ssh keys
在Git Bash命令行里,
ssh-keygen -t rsa -C "lifei@cn.xxx.com" -b 4096
根據命令行提示會在.ssh中出現公鑰私鑰
打開公鑰
cat ~/.ssh/id_rsa.pub
將命令行中的公鑰復制到gitlab中的key編輯處(首先要用上面的賬號登錄)
7.Jenkins的安裝
下載位置:https://jenkins.io/download/
安裝完成后,您將能夠通過以下地址訪問Jenkins。
http:// localhost:8080 /
8.Jenkins的使用
根據提示先設置網絡,下載推薦插件,創建用戶等
9.Jenkins的配置
【系統管理】-【系統設置】-【環境變量】
保存
【系統管理】-【全局工具配置】
-JDK-
名稱JAVA_HOME
JAVA_HOME C:\ Program Files \ Java \ jdk 1.8.0 _ 151
*未選擇自動安裝
如果
-Git-
名稱GIT_HOME
Git可執行文件格式的路徑C:\ Program Files\ Git \ bin \ git
*未選擇自動安裝
如果
-Gradle-
名稱GRADLE_HOME
Gradle可執行格式的路徑C:\Program Files\gradle-3.3
【Credentials】- 【Add Credentials】
Key中輸入.ssh中的私鑰:id_rsa
點擊ok即設置成功
注意:C:\Windows\System32\config\systemprofile中也需復制一份.ssh
Git中也需復制一份
10.測試軟件的安裝
・protractor
npm install protractor -g
・webdriver
webdriver-manager update
・protractor-jasmine2-html-reporter
npm install protractor-jasmine2-html-reporter -g
・Chrome
・Appium
npm install -g appium
或者https://bitbucket.org/appium/appium.app/downloads/ AppiumForWindows_1_4_16_1.zip
手動下載appium想要在cmd中啟動成功的話設置一下環境變量
注意appium與node匹配問題
Node版本過高可能會出現問題
二、流水線
【新建任務】-【流水線】
點擊流水線語法
Repository URL:為clone代碼的路徑
生成流水線腳本,將腳本復制在任務配置的流水線腳本中
例如:
node {
stage 'checkout-aaaa'
checkout([$class: 'GitSCM', branches: [[name: '*/aaaa']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'aaa']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '6ab5348e-7f59-4a28-beee-65721d16f0a7', url: 'git@sdt-gitlab..xxxx.com:xxxxx/xxxx.git']]])
stage 'checkout-arTest'
checkout([$class: 'GitSCM', branches: [[name: '*/bbbb']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: bbb']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '6ab5348e-7f59-4a28-beee-65721d16f0a7', url: ' git@sdt-gitlab..xxxx.com:xxxxx/xxxx.git ']]])
stage 'prepare-cccc'
dir("cccc\\ccc"){
bat 'cordova -d prepare android'
}
stage 'build'
dir("refactoring\\ccc\\platforms\\android"){
bat 'gradlew.bat clean assembleDebug'
}
stage 'webdriver-manager-start'
timeout(3) {
bat 'webdriver-manager start'
}
stage 'test-assistant'
dir("dddd\\dddd\\assistant"){
catchError {
bat 'protractor conf.js'
}
}
stage 'test-on-site'
catchError {
bat 'adb uninstall io.appium.settings'
bat 'adb uninstall io.appium.unlock'
}
bat '''@echo off
for /f "tokens=5" %%i in (\'netstat -aon ^| findstr ":4723"\') do (
set n=%%i
)
if defined n (taskkill /f /pid %n%)'''
bat 'start cmd /k ""C:\\Program Files (x86)\\Appium\\node.exe" "C:\\Program Files (x86)\\Appium\\node_modules\\appium\\lib\\server\\main.js" --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --log-no-color --no-reset"'
sleep time: 1, unit: 'MINUTES'
dir("arTest_new\\arTest_new\\onsite"){
catchError {
bat 'protractor conf.js'
}
}
stage 'test-both'
catchError {
bat 'adb uninstall io.appium.settings'
bat 'adb uninstall io.appium.unlock'
}
bat '''@echo off
for /f "tokens=5" %%i in (\'netstat -aon ^| findstr ":4723"\') do (
set n=%%i
)
if defined n (taskkill /f /pid %n%)'''
bat 'start cmd /k ""C:\\Program Files (x86)\\Appium\\node.exe" "C:\\Program Files (x86)\\Appium\\node_modules\\appium\\lib\\server\\main.js" --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --log-no-color --no-reset"'
sleep time: 1, unit: 'MINUTES'
dir("arTest_new\\arTest_new\\both"){
catchError {
bat 'protractor conf.js'
}
}
stage 'artifacts'
archiveArtifacts allowEmptyArchive: true, artifacts: 'aaaa/**/android-debug.apk,**/e2eReport/e2e/htmlReport.html'
}
替換credentialsId、url、分支name、安裝路徑等等
三、出錯點
|
整個工程構建中可能會出現的問題 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
1、Jenkins上git出現Timeout的問題 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
對於安裝版,需要修改Jenkins安裝目錄下的jenkins.xml,在arguments中增加該參數。 |
|||||||||||||
|
2、gradle編譯無法初始化jvm問題 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
在使在個人文件夾( (C:\Users\username\.gradle 或 ~\.gradle))下創建gradle.properties文件,添加用Jenkins集成的時候使用的是gradle assembleRelease命令,不會自動生成gradle.properties |
||||||||||||||
|
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=1024m |
|
|
|
|
|
|
|
|
|
|
||||
|
可根據自己的需要設置jvm參數-Xmx的大小 |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3、沒有gradle.properties文件 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用Android Studio打開一個項目的時候默認會生成gradle.properties,在使用Jenkins集成的時候使用的是gradle assembleRelease命令,不會自動生成gradle.properties |
|||||||||||||
|
|
在項目目錄中添加一個gradle.properties(C:\Program Files (x86)\Jenkins\workspace\test3\refactoring\ARClient\platforms\android) |
|
|
|
||||||||||
|
4、構建過程中也會出現各種問題,試着重啟電腦重啟jenkins |
|
|
|
|
|
|
|
|
|
|