gecko-dev/testing/mozharness
Gregory Szorc 0f53b2ae0d Bug 1304176 - Use vendored virtualenv if available; r=ted
If mozharness is running from a source checkout, it has access to a
modern virtualenv+pip/setuptools vendored as part of the source
checkout.

This commit changes the virtualenv creation code to use the vendored
virtualenv when it is available.

A side effect of this change is that a modern version of pip will
now be used by mozharness when a source checkout is available. This
has a number of consequences.

First, modern versions of pip automatically create and cache wheels
when building packages. This should make automation faster since it can
now reuse cached wheels instead of having to download and rebuild
packages all the time.

Second, modern versions of pip support pinning package hashes. This
opens the door to use having more secure package downloads and more
determinism in our test environment.

Third, modern versions of pip require connections to package servers
be secure by default. Plaintext connections are disallowed by
default. A --trusted-host option or environment variable can be used
to override this behavior.

Since upgrading pip resulted in some jobs failing due to disallowed
connections to insecure servers, code to sniff the pip version and
add --trusted-host where it is needed/supported. This retains the
existing behavior. This is insecure. But fixing that is for another
bug.

As part of testing this, we were getting IOError inside virtualenv.py
when installing distutils:

IOError: [Errno 13] Permission denied: '/builds/slave/test/build/venv/lib/python2.7/distutils/__init__.py'

We worked around this by adding --always-copy to the virtualenv.py
invocation.

MozReview-Commit-ID: D29ao9ZASei

--HG--
extra : rebase_source : 031b2561a64ab1f89d25a3bfb8cf486a58b9f308
2016-09-20 21:19:56 -07:00
..
configs revert Bug 1303590 - Remove Luciddream test suite r=aobreja CLOSED TREE 2016-09-21 08:55:24 -04:00
docs Bug 1274059 - Remove HgtoolVCS - Part 2, remove actual classes and docs for hgtool. r=nthomas 2016-08-19 09:09:08 -04:00
examples
external_tools Bug 1300191 - Move machine-configuration.json into mozharness; r=jmaher 2016-09-02 15:09:02 -06:00
mozfile
mozharness Bug 1304176 - Use vendored virtualenv if available; r=ted 2016-09-20 21:19:56 -07:00
mozinfo
mozprocess
scripts Bug 1278702 - Fail early in compiled-code tests with --artifact Try syntax; r=armenzg 2016-09-20 13:43:06 -04:00
test Bug 1272083 - Download and unpacking should be performed in process. r=gps 2016-08-25 11:04:16 -04:00
LICENSE
mach_commands.py Bug 1238079 - remove the desktop web runtime; r=fabrice,mossop,gps,jryans,jmaher,marco 2016-03-07 13:33:12 -08:00
README.txt Bug 1240733 - Improve tox configuration for optional arguments. r=jlund DONTBUILD 2016-01-20 11:01:19 +01:00
requirements.txt Bug 1278103 - Google update their api client. Needs to update the client r=jlund 2016-06-13 15:31:50 +01:00
setup.cfg
setup.py
tox.ini Bug 1270317 - Upgrade to Mercurial 3.7.3 in the mozharness test environment; r=jlund 2016-05-06 10:49:08 -07:00
unit.sh

# Mozharness

## Docs
* https://developer.mozilla.org/en-US/docs/Mozharness_FAQ
* https://wiki.mozilla.org/ReleaseEngineering/Mozharness
* http://moz-releng-mozharness.readthedocs.org/en/latest/mozharness.mozilla.html
* http://moz-releng-docs.readthedocs.org/en/latest/software.html#mozharness

## Submitting changes
Like any Gecko change, please create a patch or submit to Mozreview and
open a Bugzilla ticket under the Mozharness component:
https://bugzilla.mozilla.org/enter_bug.cgi?product=Release%20Engineering&component=Mozharness

This bug will get triaged by Release Engineering

## Run unit tests
To run the unit tests of mozharness the `tox` package needs to be installed:

```
pip install tox
```

There are various ways to run the unit tests. Just make sure you are within the `$gecko_repo/testing/mozharness` directory before running one of the commands below:

```
tox                            # run all unit tests
tox -- -x                      # run all unit tests but stop after first failure
tox -- test/test_base_log.py   # only run the base log unit test
```

Happy contributing! =)