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