Jenkins針對windows自動化測試


 

一、環境搭建

注意:以下安裝最好不要安裝在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中增加該參數。
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dorg.jenkinsci.plugins.gitclient.Git.timeOut=60 -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

配置后重啟Jenkins,再次進行構建,超時設置便為60。

 

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

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM