Page MenuHomePhabricator

Add Jenkins job to mediawiki/vendor repo to verify output matches clean build
Open, MediumPublic

Description

Let's add a job that verifies the commited vendor/ directory (in mediawiki/vendor.git) matches what composer generates from scratch.

This will make commits much easier to verify and will catch any mistakes, undocumented patches or sloppy conflicts.

We'd take the proposed patch, remove composer's artefacts (*/, autoload.php), run composer install with the appropriate arguments (I think we use --optimize-autoloader), apply any patches (maybe from a patches/00*.diff pattern), and verify the git working copy is clean / same as it was.

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 3:45 AM
bzimport set Reference to bz72952.
bzimport added a subscriber: Unknown Object (MLST).
Krinkle renamed this task from Jenkins: Create job for verifying comitted composer vendor directory to Jenkins: Create job for verifying committed "vendor" directory from composer.Apr 9 2015, 7:13 PM
Krinkle updated the task description. (Show Details)
Krinkle set Security to None.
Krinkle removed a subscriber: Unknown Object (MLST).
Krinkle renamed this task from Jenkins: Create job for verifying committed "vendor" directory from composer to Add Jenkins job to mediawiki/vendor repo to verify output matches clean build.May 4 2020, 8:18 PM

Tagging as productivity. This would significantly reduce CR cost for PHP vendor updates, as it could be done fully statically rather than require local checkout and re-running of the commands.

It seems we can have a job using the composer CI Docker container and just run:

composer install --no-dev --ignore-platform-reqs
git diff --exit-code

--exit-code: Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences.

The devil is that different composer versions might end up having slightly different changes under ./composer/. I guess we can try first with a non voting job?

Change 842833 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: Provide jobs that assert that composer.lock is up-to-date with composer.json

https://gerrit.wikimedia.org/r/842833

Change 842836 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Zuul: [mediawiki/vendor] Add experimental job to check composer.lock

https://gerrit.wikimedia.org/r/842836

Change 842837 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Zuul: [mediawiki/vendor] Make job to check composer.lock voting

https://gerrit.wikimedia.org/r/842837

Change 842833 merged by jenkins-bot:

[integration/config@master] jjb: Provide jobs to assert that composer.lock is up-to-date with composer.json

https://gerrit.wikimedia.org/r/842833

Change 842836 merged by jenkins-bot:

[integration/config@master] Zuul: [mediawiki/vendor] Add experimental job to check composer.lock

https://gerrit.wikimedia.org/r/842836

Mentioned in SAL (#wikimedia-releng) [2022-10-14T15:54:07Z] <James_F> Zuul: [mediawiki/vendor] Add experimental job to check composer.lock for T74952

Change 842849 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: [composer-*-assert-lock-docker] Don't complain about composer/ dir

https://gerrit.wikimedia.org/r/842849

Change 842849 merged by jenkins-bot:

[integration/config@master] jjb: [composer-*-assert-lock-docker] Don't complain about composer/ dir

https://gerrit.wikimedia.org/r/842849

Change 842837 abandoned by Hashar:

[integration/config@master] Zuul: [mediawiki/vendor] Make job to check composer.lock voting

Reason:

https://gerrit.wikimedia.org/r/842837