0

そのため、以前は Jenkins 内から MonkeyRunner スクリプトを呼び出して USB Android デバイスに接続し、いくつかの自動テストを実行していましたが、MonkeyRunner 自体はかなり不安定だったので、素晴らしい AndroidViewClient に切り替えて、この純粋な Python API を使用するためにテスト スクリプトを移植しました。

新しい Python スクリプトは、シェルから独立して呼び出されると問題なく動作しますが、目標はビルド後のステップとして Jenkins からこのスクリプトを呼び出すことです。

私が抱えている問題は、USB Android デバイスへの初期接続です。以下のスクリプトは、実際のテスト スクリプトの一部です。これは、USB デバイスが存在するかどうかをテストし、Android デバイスに接続する前にそのシリアル番号を取得する部分です。これは、ubuntu シェルからは正常に機能しますが、Jenkins の「シェルの実行」から呼び出すと接続に失敗します。

#! /usr/bin/env python

# Import Class Files

import re
import sys
import os
import time
import commands
import signal
import subprocess
import codecs

ubuntuHome = os.getenv('HOME')
sdkRootDefault = ubuntuHome + '/dev_env/ADT/sdk'
sdkRoot = os.getenv('ANDROID_SDK_ROOT',sdkRootDefault)
platformTools = sdkRoot + '/platform-tools'

# Find the attached devices
adbcmd = platformTools + "/./adb devices |grep -v attached |grep device |head -n 1 | cut  -f1"
p = subprocess.Popen(adbcmd, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
serialnoIn = (p.stdout.readline()).strip()

# No devices found then exit
if len(serialnoIn) == 0 or serialnoIn is None:
    print ("ERROR: No devices found")
    sys.exit(1)

print "INFO: Trying Connection to " + serialnoIn + "..." 

Ubuntu Shell からの出力は次のとおりです。

情報: 3a005473 に接続しようとしています...

Jenkinsの「シェルの実行」ビルドステップから

エラー: デバイスが見つかりません

興味深いことに、元の MonkeyRunner スクリプト内からこの同じスニペットを呼び出すと、問題なく動作しました。それで、MonkeyRunner は私の Python スクリプトが行っていない初期設定を行うと考えていますか? USB デバイスの設定方法を知るには、Python の専門家ではありません。どんな助けでも大歓迎です。

4

1 に答える 1

1

わかりました答えは本当に簡単でした-jenkinsがsdkツールとAndroidViewClientパスを利用できると助かります!

sudo -Rm u:jenkins:rwx

...修正しました

于 2014-02-06T14:18:05.217 に答える