Serializing Pharo Contribution CI jobs from one matrix
Hi, Is it possible to serialize (i.e. do not execute in parallel) the CI jobs of one matrix of Pharo Contributions ? The Zinc jobs occasionally fails because they interfere with each other (i.e. although they use random ports for servers during unit testing, sometimes they use a port that is already in use by a parallel running job, presumably from the built matrix). Thx, Sven
Hi Sven, We have a similar issue on our build server and Jenkins gives you an environment variable $EXECUTOR_NUMBER which you can use to define different ports to be used in the tests.
From our config, the function below assumes 3 possible executors and defines a set of environment variables that the tests will use. Of course, we use OSProcess to read the variables in Pharo itself.
Maybe this helps. Cheers Johan function setupconfiguration { if [ $EXECUTOR_NUMBER -eq 0 ]; then export DISPLAY=:3 export NPGOODSPORT=7001 export NPGOODSTELNETPORT=8922 export NPSELENIUMPORT=4446 export NPNEXTPLANPORT=8082 export NPJASPERREPORTSPORT=9095 fi if [ $EXECUTOR_NUMBER -eq 1 ]; then export DISPLAY=:5 export NPGOODSPORT=7002 export NPGOODSTELNETPORT=8923 export NPSELENIUMPORT=4448 export NPNEXTPLANPORT=8084 export NPJASPERREPORTSPORT=9096 fi if [ $EXECUTOR_NUMBER -eq 2 ]; then export DISPLAY=:6 export NPGOODSPORT=7003 export NPGOODSTELNETPORT=8924 export NPSELENIUMPORT=4449 export NPNEXTPLANPORT=8085 export NPJASPERREPORTSPORT=9097 fi } On 22 Jan 2014, at 18:24, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Hi,
Is it possible to serialize (i.e. do not execute in parallel) the CI jobs of one matrix of Pharo Contributions ?
The Zinc jobs occasionally fails because they interfere with each other (i.e. although they use random ports for servers during unit testing, sometimes they use a port that is already in use by a parallel running job, presumably from the built matrix).
Thx,
Sven
Dag Johan, Bedankt voor de tip. (Thanks for the tip) I was hoping for a simpler solution ;-) Doing it like that binds the tests a bit to the CI environment, but maybe I can make that optional. BTW, on Pharo 3.0, environment access is built in: Smalltalk os environment getEnv: 'USER'. I guess that I can't do that on 2.0, which I would need. Maybe I can pass something in as a command line argument. I'll have to think about that. Sven On 22 Jan 2014, at 19:37, Johan Brichau <johan@inceptive.be> wrote:
Hi Sven,
We have a similar issue on our build server and Jenkins gives you an environment variable $EXECUTOR_NUMBER which you can use to define different ports to be used in the tests. From our config, the function below assumes 3 possible executors and defines a set of environment variables that the tests will use. Of course, we use OSProcess to read the variables in Pharo itself.
Maybe this helps. Cheers Johan
function setupconfiguration { if [ $EXECUTOR_NUMBER -eq 0 ]; then export DISPLAY=:3 export NPGOODSPORT=7001 export NPGOODSTELNETPORT=8922 export NPSELENIUMPORT=4446 export NPNEXTPLANPORT=8082 export NPJASPERREPORTSPORT=9095 fi if [ $EXECUTOR_NUMBER -eq 1 ]; then export DISPLAY=:5 export NPGOODSPORT=7002 export NPGOODSTELNETPORT=8923 export NPSELENIUMPORT=4448 export NPNEXTPLANPORT=8084 export NPJASPERREPORTSPORT=9096 fi if [ $EXECUTOR_NUMBER -eq 2 ]; then export DISPLAY=:6 export NPGOODSPORT=7003 export NPGOODSTELNETPORT=8924 export NPSELENIUMPORT=4449 export NPNEXTPLANPORT=8085 export NPJASPERREPORTSPORT=9097 fi }
On 22 Jan 2014, at 18:24, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Hi,
Is it possible to serialize (i.e. do not execute in parallel) the CI jobs of one matrix of Pharo Contributions ?
The Zinc jobs occasionally fails because they interfere with each other (i.e. although they use random ports for servers during unit testing, sometimes they use a port that is already in use by a parallel running job, presumably from the built matrix).
Thx,
Sven
Hi Sven, Le 22 janv. 2014 à 18:24, Sven Van Caekenberghe a écrit :
Hi,
Is it possible to serialize (i.e. do not execute in parallel) the CI jobs of one matrix of Pharo Contributions ?
The Zinc jobs occasionally fails because they interfere with each other (i.e. although they use random ports for servers during unit testing, sometimes they use a port that is already in use by a parallel running job, presumably from the built matrix).
Matrix jobs are seen as individual jobs. Maybe you can just tick this option in the job configuration: "Run each configuration sequentially" There are other solutions: https://wiki.jenkins-ci.org/display/JENKINS/Port+Allocator+Plugin https://wiki.jenkins-ci.org/display/JENKINS/Lockable+Resources+Plugin https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin Christophe.
On 23 Jan 2014, at 10:57, Christophe Demarey <Christophe.Demarey@inria.fr> wrote:
Hi Sven,
Le 22 janv. 2014 à 18:24, Sven Van Caekenberghe a écrit :
Hi,
Is it possible to serialize (i.e. do not execute in parallel) the CI jobs of one matrix of Pharo Contributions ?
The Zinc jobs occasionally fails because they interfere with each other (i.e. although they use random ports for servers during unit testing, sometimes they use a port that is already in use by a parallel running job, presumably from the built matrix).
Matrix jobs are seen as individual jobs. Maybe you can just tick this option in the job configuration: "Run each configuration sequentially"
Works perfectly, thanks !
There are other solutions: ⢠https://wiki.jenkins-ci.org/display/JENKINS/Port+Allocator+Plugin ⢠https://wiki.jenkins-ci.org/display/JENKINS/Lockable+Resources+Plugin ⢠https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin
Christophe.
participants (3)
-
Christophe Demarey -
Johan Brichau -
Sven Van Caekenberghe