一、环境搭建
注意:以下安装最好不要安装在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 |
|
|
|
|
|
|
|
|
|
|