12

मैं ट्रैविस सीआई में कुछ पीएल/पायथन पोस्टग्रेएसक्यूएल प्रक्रियाओं के लिए सीआई स्थापित करने की कोशिश कर रहा हूं।ट्रैविस सीआई के साथ Pl/Python PostgreSQL प्रक्रियाओं का परीक्षण कैसे करें?

मैं कोशिश की है कई तरीके:
1) विरासत बुनियादी सुविधाओं मैं सिर्फ ग्रहण करने के लिए, कि पी एल/अजगर पहले से स्थापित है की कोशिश की है के साथ, लेकिन यह सफल नहीं था:

The command "psql -U postgres -c 'CREATE EXTENSION plpythonu;'" exited with 1. 
0.01s$ psql -U postgres -d test -c 'CREATE LANGUAGE plpythonu;' 
ERROR: could not access file "$libdir/plpython2": No such file or directory 

2) शुरुआत में sudo apt-get update && sudo apt-get -y install postgresql-plpython-9.4 कमांड जोड़ने की कोशिश की है। और यह भी असफल रहा, क्योंकि इस आदेश ने PostgresSQL 9.4 के प्रतिस्थापन की शुरुआत की, जो ट्रैविस पर्यावरण में पहले से ही स्थापित है।

addons: 
    postgresql: "9.4" 
    apt: 
    packages: 
     - postgresql-plpython-9.4 

भी कोई सफलता:

Travis build.

3) इसके अलावा config में इस लाइनों के साथ कंटेनर आधारित अवसंरचना का उपयोग करने की कोशिश की।

ट्रैविस सीआई में पीएल/पायथन प्रक्रिया का परीक्षण करने का अच्छा तरीका क्या है?

+0

आपको लगता है कि यह विकल्प 2 के लिए विफल क्यों है? ट्रैविस [डॉक्स] (http://docs.travis-ci.com/user/installing-dependencies/) स्पष्ट हैं कि इंस्टॉलेशन से पहले पैकेज अपडेट करना निर्भरता स्थापित करते समय करना सही है ... –

+0

@ पीटरब्रिटैन यह किसी भी तरह से संघर्ष करता है मौजूदा PostgreSQL के साथ। अद्यतन देखें, मैंने इस तरह के निर्माण के लॉग को संलग्न किया है। –

+1

ऐसा लगता है कि अपग्रेड से गुजरने से इंकार कर रहा है क्योंकि पोस्टग्रेस का आपका पुराना संस्करण अभी भी चल रहा है ... क्या आपने अपग्रेड किए जाने से पहले पोस्टग्रेस को रोकने का प्रयास किया है? –

उत्तर

5

मैं निम्नलिखित .travis.yml साथ python-tempo build working प्राप्त करने में सक्षम था:

sudo: required 
language: python 
before_install: 
    - sudo apt-get -qq update 
    - sudo /etc/init.d/postgresql stop 
    - sudo apt-get install -y postgresql-9.4 
    - sudo apt-get install -y postgresql-contrib-9.4 postgresql-plpython-9.4 
    - sudo -u postgres createdb test 
    - sudo -u postgres createlang plpython2u test 
    - sudo pip install jinja2 
script: 
    - > 
     sudo -u postgres psql -d test -c 'CREATE OR REPLACE FUNCTION py_test() 
            RETURNS void LANGUAGE plpython2u AS $$ 
            import jinja2 
            $$;' 
    - sudo -u postgres psql -d test -c 'SELECT py_test();' 

आपका विरासत विन्यास प्रयास 9.4 स्थापित करने से पहले मौजूदा PostgreSQL 9.1 उदाहरण रोक नहीं सहित कई मुद्दों की एक किस्म की थी और निर्दिष्ट नहीं plpython भाषा ठीक से। मुझे विश्वास है कि कुछ आदेश भी सही उपयोगकर्ता के रूप में नहीं चल रहे थे। उपरोक्त कॉन्फ़िगरेशन द्वारा सभी मुद्दों का समाधान किया जाता है। ऐसे तरीके हो सकते हैं जिनमें इस कॉन्फ़िगरेशन में सुधार किया जा सके, लेकिन एक बार जब मैं इसे काम कर रहा हूं तो मैंने रोका।

कंटेनर-आधारित कॉन्फ़िगरेशन काम नहीं करेगा क्योंकि postgresql-plpython-9.4 वर्तमान में whitelist of pre-approved packages में नहीं है। हालांकि, postgresql-plpython-9.5 है, इसलिए यदि आप किसी कंटेनर-आधारित कॉन्फ़िगरेशन में माइग्रेट करना चाहते हैं, तो आप following the package approval processpostgresql-plpython-9.4 के लिए या GA release of PostgreSQL 9.5 के लिए प्रतीक्षा कर सकते हैं और फिर माइग्रेट करने का प्रयास कर सकते हैं।

+0

कंटेनर-आधारित आधारभूत संरचना का उपयोग करते हैं, तो आप postgresql-plpython-9.4' या 'postgresql-plpython-9.5' संकुल को संस्थापित करने से पहले PostgrteSQL को कैसे रोकेंगे? –

+0

@ गिलबेट्स मैंने कंटेनर-आधारित कॉन्फ़िगरेशन के साथ अपना सेटअप करने का प्रयास नहीं किया क्योंकि मैंने देखा कि 'postgresql-plpython-9.4' पूर्व-अनुमोदित पैकेज नहीं था। मुझे लगता है कि अगर यह पूर्व-अनुमोदित था और आपने विकल्प 3 से कॉन्फ़िगरेशन का उपयोग किया था, तो ट्रैविस को यह जानने के लिए पर्याप्त स्मार्ट होगा कि पोस्टग्रेएसक्यूएल कब रुकना और शुरू करना है। यदि यह पर्याप्त स्मार्ट नहीं है, तो मैं ट्रैविस के साथ एक बग पर विचार करूंगा, और मुझे नहीं पता कि उस परिदृश्य में PostgreSQL को कैसे रोकें, क्योंकि वर्तमान ट्रैविस दस्तावेज़ भी पोस्टग्रेएसक्यूएल को रोकने के लिए 'सुडो' का उपयोग करते हैं: http: //docs.travis -ci.com/user/database-setup/#PostgreSQL – heenenee

3

मैं विवरण ठीक-ठीक पता नहीं है, लेकिन, अगर आप सही जगह में फ़ाइलों को डाल दिया, आप प्रक्रिया ही

import fileName.className 

या

import methodName from fileName.className 

संपादित से यह कॉल कर सकते हैं: मैंने इसे देखा, बस इसे उसी प्रोग्राम में डालें जो आप चल रहे प्रोग्राम (cmd, idle, ect।) के रूप में डालते हैं और इसे कॉल करते हैं, या इसे फ़ोल्डर में डालते हैं और फ़ोल्डर नाम को

उदा। ।

import folder/fileName.ClassName 
4

एक जवाब अब है कि यह पुष्टि की गई है करने के लिए मेरे पिछले टिप्पणी परिवर्तित ...

Travis docs में दस्तावेज के रूप में, यह स्थापित करने के लिए सही तरीके से before_install मंच (ज्यादा विकल्प 2 की तरह पर अपने निर्भरता अद्यतन करने के लिए है आपकी सूची में)।

एकमात्र समस्या यह प्रतीत होती है कि आपने अपग्रेड से पहले पोस्टग्रेज़ को नहीं रोका था।

संबंधित मुद्दे