Configuración de integración continua usando bitcoind regtest en travis-ci

Subtítulo: travis-ci no puede ejecutar generateel método JSON-RPC en el registro

Estoy tratando de configurar el proceso de CI en la plataforma https://travis-ci.org para instalar bitcoind e iniciar un nuevo regtestmodo de uso de blockchain.
Quiero hacer esto para ejecutar pruebas unitarias de mis aplicaciones que usan datos de billetera. Los métodos contra bitcoind funcionan bien, excepto el generatemétodo que se necesita para extraer algunos bitcoins en la cadena privada de registro.

Parece algún bitcoind/travis-ciproblema relacionado.

  1. generateEl método funciona bien en mi proceso de CI local (no travis).
  2. Travis-CI funciona bien si comento la generatellamada al método en las pruebas de CI.

generatela llamada al método cuando se usa travis-ci falla con el siguiente error:

{"code":-32601,"message":"Method not found"}

bitcoin.conf:

server=1
regtest=1
gen=1
rpcuser=someuser
rpcpassword=somepass

.travis.yml:

language: r
sudo: required

before_script:
  - sudo apt-add-repository ppa:bitcoin/bitcoin -y
  - sudo apt-get update -qq
  - sudo apt-get install bitcoind -y

r_github_packages:
 - jangorecki/rbitcoind

after_script:
 - cat $(find . -maxdepth 1 -name "*.Rcheck" -type d)/tests/tests.Rout

¿Hay algún truco en la configuración que deba usar para hacer que travis-ci sea capaz de ejecutar CI en regtestcadena, incluido el generatemétodo?

Dejando los enlaces de compilación solo como referencia:
- generatemétodo comentado - CI pasó: https://travis-ci.org/jangorecki/rpc.generate/builds/77207297
- use generate- CI falló: https://travis-ci.org/ jangorecki/rpc.generate/builds/77208666

Respuestas (1)

v0.11.0 y posteriores:

Verifique y asegúrese de que la versión de su daemon sea v0.11.0 o superior. Si es así, el método de generación debería funcionar.

Antes de v0.11.0:

El setgenerate truemétodo debe ser utilizado.

En una red estándar (como testneto main), setgenerate trueactivará la minería indefinidamente. En el registro, solo extrae un bloque. también puedes hacer

setgenerate(TRUE, 10)

Para minar 10 bloques de registro. El segundo parámetro se denomina límite de generación.

de acuerdo con la referencia del método de generación, el método debe usarse especialmente en regtestmodo para extraer bloques instantáneamente sin el costo de la computación, y esa característica es imprescindible para una plataforma como travis-ci. Si estás preguntando por generate()el cuerpo, mira esto . Solo funciona en dos entornos de CI: ubuntu y vm ubuntu.
@jangorecki Eso debe haberse agregado en v0.11.0, actualmente estoy ejecutando v0.10.2. Sin embargo, las notas de la versión no dicen que generatese agregó un método. ¿Qué versión de bitcoindestás ejecutando?
OK, veo que tengo 0.10.2en travis, esta es la razón por la que no se encontró ningún método. Estoy usando el mismo ppa, por lo que debería obtener la última versión de bitcoind, ¿no es así? puede poner información sobre la versión de su respuesta, así que la aceptaré. Gracias
@jangorecki Supongo que el ppa está desactualizado. Es solo una versión desactualizada, al menos. He actualizado mi respuesta para incluir información de la versión.
launchpad.net/~bitcoin/+archive/ubuntu/bitcoin ¿detuvieron las compilaciones para ubuntu 12.04?
No, las compilaciones fallaron para 12.04 y nunca se repararon.
@MattCorallo, ¿es tan difícil hacerlos funcionar? esto permitiría que cualquier proyecto de github que use travis-ci ejecute pruebas unitarias contra su propia cadena de bloques, una extensión bastante grande.