I am trying to run python unit tests in jenkins using tox
's virtualenv. I am behind a proxy so I need to pass HTTP_PROXY
and HTTPS_PROXY
to tox, else it has problems with downloading stuff.
I found out that I can edit tox.ini
and add passenv=HTTP_PROXY HTTPS_PROXY
under [testenv]
, and than using the Create/Update Text File Plugin I can override the tox.ini(as a build step) whenever Jenkins job fetches the original file from repository. This way I can manually copy content of tox.ini from workspace, add the passenv=
line below [testenv]
and update the file with the plugin mentioned above. But this is not the proper solution. I don't want to edit the tox.ini file this way, because the file is constantly updated. Using this solution would force me to update the tox.ini content inside the plugin everytime it is changed on the git repository and I want the process of running unit tests to be fully automated. And no, I can't edit the original file on git repository.
So is there a way that I can pass the passenv = HTTP_PROXY HTTPS_PROXY
in the Shell nature command? This is how my command in Virtualenv Builder looks like:
pip install -r requirements.txt -r test-requirements.txt
pip install tox
tox --skip-missing-interpreter module/tests/
I want to do something like this:
tox --skip-missing-interpreter --[testenv]passenv=HTTP_PROXY HTTPS_PROXY module/tests
How to solve this?
NOTE:
I think there might be a solution with using the {posargs}, but I see that there is a line in the original tox.ini containing that posargs already: python setup.py testr --testr-args='{posargs}'
help...
I thought about a workaround:
Create a build step in Jenkins job, that will execute bash script, that will open the
tox.ini
find line[testenv]
and input one line belowpassenv = HTTP_PROXY HTTPS_PROXY
. That would solve the problem. I am working on this right now but anyway if You guys know a better solution please let me know. cheersOk so this is the solution:
Add a build step Execute shell
Input this:
sed -i.bak '/\[testenv\]/a passenv = HTTP_PROXY HTTPS_PROXY' tox.ini
This will update the tox.ini file (input the desired passenv line under [testenv] and save changes). And create a tox.ini.bak backup file with the original data before sed's change.