Create a job that runs "composer test" and runs on PHP 7.0 on jessie.
|integration/config : master||Move composer-package-php70-docker out of experimental (try #2)|
|integration/config : master||composer-package: git clone inside the container|
|integration/config : master||Revert "Move composer-package-php70-docker out of experimental"|
|integration/config : master||Move composer-package-php70-docker out of experimental|
|integration/config : master||[mediawiki/core] experimental composer-php70-jessie|
|integration/config : master||Add composer test jobs that use PHP 7.0|
|Resolved||Legoktm||T144964 PHP7 support in CI (tracking)|
|Resolved||Legoktm||T144961 Create composer-php70 job|
|Resolved||Legoktm||T144872 Support PHP 7 in CI infra|
|Resolved||• hashar||T133911 Bump quota of Nodepool instances (contintcloud tenant)|
|Resolved||• hashar||T139771 Identify metric (or metrics) that gives a useful indication of user-perceived (Wikimedia developer) service of CI|
These are now deployed in the experimental pipeline - we're now waiting for 1) some people to test out their extensions and make sure they pass 2) increase CI capacity so we can run more jobs per commit (T133911: Bump quota of Nodepool instances (contintcloud tenant)).
I have moved composer-package-php70-docker back to the experimental pipeline due to T177905.
We do clone the repository on the host in ./src. Files are owned by jenkins-deploy.
It is then mounted as a volume in the container via -v /srv/jenkins-workspace/workspace/composer-package-php70-docker/src:/src
Inside the container, composer install is run as the nobody user and creates a bunch of files under src/vendor. They are owned by nobody.
On the next build, when trying to wipe out ./src the jenkins-deploy user is unable to delete the files generated during the build. The build fail.
+ rm -rf log + mkdir -m 2777 -p log + rm -rf src rm: cannot remove ‘src/vendor/phpspec/prophecy/README.md’: Permission denied rm: cannot remove ‘src/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php’: Permission denied ...
The issue is that $WORKSPACE/src is created by the jenkins agent. Later on it is populated by a Docker container.
Supposedly that is fixable by having:
- src with set group id
- container entrypoint running with umask 002
(credits to addshore/tyler).
Checking with cumin:
sudo cumin --force 'name:docker' 'ls -l /srv/jenkins-workspace/workspace/composer-package-php70-docker'
Some of cache/log/src lack the setgroupid bit.