如何使用 Travis CI 测试 Pl/Python PostgreSQL 程序?
How to test Pl/Python PostgreSQL procedures with Travis CI?
我正尝试在 Travis CI 中为某些 PL/Python PostgreSQL 过程设置 CI。
我试过几种方法:
1) 对于遗留基础设施,我试图假设 PL/Python 已经安装,但没有成功:
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 的替换,它已经安装在 Travis 环境中。
3) 还尝试在配置中通过以下行使用基于容器的基础架构:
addons:
postgresql: "9.4"
apt:
packages:
- postgresql-plpython-9.4
也没有成功。
在 Travis CI 中测试 PL/Python 程序的好方法是什么?
我不太清楚细节,但是,如果你把文件放在正确的地方,你可以从过程本身调用它
import fileName.className
或
import methodName from fileName.className
编辑:我查了一下,把它和你的程序放在同一个目录下运行(命令,空闲等)然后调用它,或者把它放在一个文件夹中并添加代码的文件夹名称
例如
import folder/fileName.ClassName
我能够得到 python-tempo build working with the following .travis.yml:
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. However, postgresql-plpython-9.5
is, so if you want to migrate to a container-based configuration, you can either try following the package approval process for postgresql-plpython-9.4
or wait for the GA release of PostgreSQL 9.5 中,然后尝试迁移。
正在将我之前的评论转换为已确认的答案...
如 Travis docs 中所述,正确的安装方法是在 before_install 阶段更新您的依赖项(很像列表中的选项 2)。
唯一的问题似乎是您在升级前没有停止 Postgres。
我正尝试在 Travis CI 中为某些 PL/Python PostgreSQL 过程设置 CI。
我试过几种方法:
1) 对于遗留基础设施,我试图假设 PL/Python 已经安装,但没有成功:
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 的替换,它已经安装在 Travis 环境中。
3) 还尝试在配置中通过以下行使用基于容器的基础架构:
addons:
postgresql: "9.4"
apt:
packages:
- postgresql-plpython-9.4
也没有成功。
在 Travis CI 中测试 PL/Python 程序的好方法是什么?
我不太清楚细节,但是,如果你把文件放在正确的地方,你可以从过程本身调用它
import fileName.className
或
import methodName from fileName.className
编辑:我查了一下,把它和你的程序放在同一个目录下运行(命令,空闲等)然后调用它,或者把它放在一个文件夹中并添加代码的文件夹名称
例如
import folder/fileName.ClassName
我能够得到 python-tempo build working with the following .travis.yml:
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. However, postgresql-plpython-9.5
is, so if you want to migrate to a container-based configuration, you can either try following the package approval process for postgresql-plpython-9.4
or wait for the GA release of PostgreSQL 9.5 中,然后尝试迁移。
正在将我之前的评论转换为已确认的答案...
如 Travis docs 中所述,正确的安装方法是在 before_install 阶段更新您的依赖项(很像列表中的选项 2)。
唯一的问题似乎是您在升级前没有停止 Postgres。