我在Google Compute Engine中設置了一個Jenkins實例,用於在this page from Google之後構建和部署App Engine Java項目。Jenkins gcloud部署導致ImportError
我已經配置詹金斯運行以下shell命令只有在Maven構建成功:gcloud --project=decent-ellipse-843 preview app deploy target/*-SNAPSHOT/
當我嘗試構建,部署失敗與以下跟蹤:
+ gcloud --project=decent-ellipse-843 preview app deploy target/backend-api-0.0.1-SNAPSHOT/
Traceback (most recent call last):
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 183, in <module>
main()
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 179, in main
_cli.Execute()
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 488, in Execute
post_run_hooks=self.__post_run_hooks)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/backend.py", line 1016, in Run
result = command_instance.Run(args)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/exceptions.py", line 86, in TryFunc
return func(*args, **kwargs)
File "/usr/local/share/google/google-cloud-sdk/lib/googlecloudsdk/appengine/app_commands/deploy.py", line 158, in Run
stage_dir = self.__MakeStagingDir(project, args, deployable)
File "/usr/local/share/google/google-cloud-sdk/lib/googlecloudsdk/appengine/app_commands/deploy.py", line 268, in __MakeStagingDir
java_app_update = appcfg_java.JavaAppUpdate(deployable, args)
File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/appcfg_java.py", line 146, in __init__
self.app_engine_web_xml = self._ReadAppEngineWebXml()
File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/appcfg_java.py", line 205, in _ReadAppEngineWebXml
parser=app_engine_web_xml_parser.AppEngineWebXmlParser)
File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/appcfg_java.py", line 217, in _ReadAndParseXml
return parser().ProcessXml(file_handle.read())
File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/app_engine_web_xml_parser.py", line 71, in ProcessXml
xml_root = ElementTree.fromstring(xml_str)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1300, in XML
parser = XMLParser(target=TreeBuilder())
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1466, in __init__
"No module named expat; use SimpleXMLTreeBuilder instead"
ImportError: No module named expat; use SimpleXMLTreeBuilder instead
Build step 'Execute shell' marked build as failure
Finished: FAILURE
行家構建是成功的,我可以通過手動發佈gcloud命令來部署項目。
即使我在相同的目錄下並在同一用戶(tomcat
)下運行完全相同的gcloud
命令,部署也會成功完成而不會出錯。
我重新安裝了python並更新了Google Cloud SDK,沒有任何結果。
該實例運行Python 2.7.3,Jenkins 1.598,JDK 7u76和Maven 3.2.2。
我希望有人能幫助我這個!
你從Jenkins和命令行發出命令時檢查環境之間的差異嗎?由於gcloud是一個python實用程序,因此在這兩種情況下檢查python解釋器環境可能會很有用。 – Antxon 2015-02-10 16:30:39
我檢查了shell可執行文件(/ bin/sh),用戶,工作目錄和python版本。它們都與我在命令行上做的相符。 – 2015-02-10 17:08:38
也檢查環境變量(shell env輸出命令)。看起來jenkins batched python解釋器無法在您的系統上找到expat軟件包。這很可能是由於登錄和登錄shell的環境初始化不同所致。 – Antxon 2015-02-10 20:03:50