Hi Olivier, Any suggestion on how to achieve this? Basically I would like to take a copy of the update center corresponding to the oldest version of Jenkins we support, and use it in our ITs. This page <https://github.com/jenkinsci/acceptance-test-harness/blob/master/docs/SUT-VERSIONS.md> give several ways to control plugin versions, but I haven't found a way to point the update center to a local json file for example.
Julien Henry | SonarSource Developer https://sonarsource.com Le mar. 19 mars 2019 à 19:20, Oliver Gondža <[email protected]> a écrit : > On 19/03/2019 17.26, Julien HENRY wrote: > > My tests are green when executed with Jenkins 2.164.1! That's already > > great news, thanks for your help. > > > > But with the oldest Jenkins version we are supporting (2.89.4), all > > pipeline related tests are failing. I wonder if this could be an issue > > with the update center. > > Quite likely, see[1] to check for which LTS lines we still distribute > update centers. 2.89 is the latest we have dropped the UC for to this > day. The infra falls back to UC for latest weekly and it is not able to > satisfy plugin dependencies given the ancient core. > > You might want to setup and maintain you own UC for releases you support > to prevent this from happening (as upstream UCs are rotated > (a)periodically) if you have not already. > > [1] https://updates.jenkins-ci.org/ > > > @WithPlugins("workflow-aggregator") > > > > In logs, I can see: > > > > *16:27:41* INFO: workflow-aggregator is not installed > > > > [...] > > > > *16:27:41* Mar 19, 2019 4:27:41 PM > org.jenkinsci.test.acceptance.junit.WithPlugins$RuleImpl$1 installPlugins > > *16:27:41* INFO: Installing plugins for test: [workflow-aggregator, > sonar, filesystem_scm, plain-credentials] > > > > [...] > > > > *16:28:27* master57755|INFO: Adding dependent install of > pipeline-model-definition for plugin workflow-aggregator > > > > [...] > > > > *16:28:27* master57755|INFO: Adding dependent install of > workflow-cps-global-lib for plugin pipeline-model-definition > > > > [...] > > > > *16:28:35* master57755|INFO: Starting the installation of Pipeline: > Shared Groovy Libraries on behalf of anonymous > > *16:28:35* Mar 19, 2019 4:28:35 PM > org.jenkinsci.test.acceptance.update_center.MockUpdateCenter > lambda$ensureRunning$3 > > *16:28:35* INFO: serving > /home/ssjenka/.m2/repository/org/jenkins-ci/plugins/workflow/workflow-cps-global-lib/2.13/workflow-cps-global-lib-2.13.hpi > > *16:28:36* master57755|Mar 19, 2019 4:28:35 PM > hudson.model.UpdateCenter$UpdateCenterConfiguration download > > *16:28:36* master57755|INFO: Downloading Pipeline: Shared Groovy > Libraries > > *16:28:36* master57755|Mar 19, 2019 4:28:35 PM hudson.PluginManager > dynamicLoad > > *16:28:36* master57755|INFO: Attempting to dynamic load > /home/ssjenka/cix/workspace/sonar-scanner-jenkins-qa/4adbdb2c/its/target/jenkins1486774028372987495home/plugins/workflow-cps-global-lib.jpi > > *16:28:36* master57755|Mar 19, 2019 4:28:36 PM > hudson.model.UpdateCenter$DownloadJob run > > *16:28:36* master57755|SEVERE: Failed to install Pipeline: Shared Groovy > Libraries > > *16:28:36* master57755|java.io.IOException: Failed to dynamically > deploy this plugin > > *16:28:36* master57755| at > hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1893) > > *16:28:36* master57755| at > hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1651) > > *16:28:36* master57755| at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > > *16:28:36* master57755| at > java.util.concurrent.FutureTask.run(FutureTask.java:266) > > *16:28:36* master57755| at > hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110) > > *16:28:36* master57755| at java.lang.Thread.run(Thread.java:748) > > *16:28:36* master57755|Caused by: java.io.IOException: Failed to install > workflow-cps-global-lib plugin > > *16:28:36* master57755| at > hudson.PluginManager.dynamicLoad(PluginManager.java:882) > > *16:28:36* master57755| at > hudson.PluginManager.dynamicLoad(PluginManager.java:821) > > *16:28:36* master57755| at > hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1889) > > *16:28:36* master57755| ... 5 more > > *16:28:36* master57755|Caused by: java.io.IOException: Pipeline: Shared > Groovy Libraries v2.13 failed to load. > > *16:28:36* master57755| - You must update Jenkins from v2.89.4 to > v2.107.3 or later to run this plugin. > > *16:28:36* master57755| at > hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:626) > > *16:28:36* master57755| at > hudson.PluginManager.dynamicLoad(PluginManager.java:872) > > *16:28:36* master57755| ... 7 more > > > > > > Do you know why is workflow-cps-global-lib plugin 2.13 selected to be > > installed if it is not compatible with Jenkins 2.89.4? Shouldn't it > > always select the latest compatible version? > > > > > > > > Julien Henry | SonarSource > > > > Developer > > > > https://sonarsource.com <https://sonarsource.com/> > > > > > > Le mar. 19 mars 2019 à 14:01, Julien HENRY <[email protected] > > <mailto:[email protected]>> a écrit : > > > > You got it right :) > > > > I have tested removing the sha1 only and it works fine, I will open > > a PR. > > > > Julien Henry | SonarSource > > > > Developer > > > > https://sonarsource.com <https://sonarsource.com/> > > > > > > Le mar. 19 mars 2019 à 10:05, Oliver Gondža <[email protected] > > <mailto:[email protected]>> a écrit : > > > > Hey, let me see if I understand that. > > > > Your ATH version is new enough to correctly spoof the checksum > > so it > > works (for latest Jenkins versions, at least). Where it does not > > work is > > older versions of Jenkins, from before the sha512 was > > introduced, since > > the other checksums are not modified. > > > > Provided this is correct, I would be more than welcome to > > propose a fix > > to add them in the spirit of[1]. BTW, I might not be remembering > > this > > correctly, but older versions of Jenkins was accepting metadata > > with no > > checksum at all[2] so removing the sha1 _might_ work equally > well. > > > > Hope that helps! > > > > [1] > > > https://github.com/jenkinsci/acceptance-test-harness/commit/240e438e2a3ab719a7301ab112de470fd503572e#diff-e5a5651006d379f437e8f02dfa5866deR133 > > [2] > > > https://github.com/jenkinsci/acceptance-test-harness/commit/240e438e2a3ab719a7301ab112de470fd503572e#diff-e5a5651006d379f437e8f02dfa5866deL129 > > > > On 19/03/2019 09.31, Julien HENRY wrote: > > > Hi Olivier, > > > > > > New question today. Tests are passing locally on my box. But > > I have some > > > errors when trying to run them on our CI. > > > > > > The error is: > > > > > > *16:14:32* master60888|INFO: Starting the installation of > > SonarQube Scanner on behalf of anonymous > > > *16:14:32* Mar 18, 2019 4:14:31 PM > > org.jenkinsci.test.acceptance.update_center.MockUpdateCenter > > lambda$ensureRunning$3 > > > *16:14:32* INFO: serving > > > > /home/ssjenka/cix/workspace/sonar-scanner-jenkins-qa/4bfcaa4d/its/sonar-2.9.0.2184.hpi > > > *16:14:32* master60888|Mar 18, 2019 4:14:31 PM > > hudson.model.UpdateCenter$UpdateCenterConfiguration download > > > *16:14:32* master60888|INFO: Downloading SonarQube Scanner > > > *16:14:32* master60888|Mar 18, 2019 4:14:32 PM > > hudson.model.UpdateCenter$DownloadJob run > > > *16:14:32* master60888|SEVERE: Failed to install SonarQube > > Scanner > > > *16:14:32* master60888|java.io <http://java.io>.IOException: > > Downloaded file > > > > /home/ssjenka/cix/workspace/sonar-scanner-jenkins-qa/4bfcaa4d/its/target/jenkins5732199865628847180home/plugins/sonar.jpi.tmp > > does not match expected SHA-1, expected > > 'Eus1cNBamti/4FOVkn3XRwCvvKc=', actual > > 'yfMPBYKO2mBfTUzsaVdgGB3l0KI=' > > > *16:14:32* master60888| at > > hudson.model.UpdateCenter.verifyChecksums(UpdateCenter.java:1810) > > > *16:14:32* master60888| at > > hudson.model.UpdateCenter.access$1100(UpdateCenter.java:149) > > > *16:14:32* master60888| at > > > hudson.model.UpdateCenter$InstallationJob.replace(UpdateCenter.java:1963) > > > *16:14:32* master60888| at > > > > hudson.model.UpdateCenter$UpdateCenterConfiguration.install(UpdateCenter.java:1194) > > > *16:14:32* master60888| at > > > hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1680) > > > *16:14:32* master60888| at > > > hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1874) > > > *16:14:32* master60888| at > > hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1651) > > > *16:14:32* master60888| at > > > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > > > *16:14:32* master60888| at > > java.util.concurrent.FutureTask.run(FutureTask.java:266) > > > *16:14:32* master60888| at > > > > hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:112) > > > *16:14:32* master60888| at > > java.lang.Thread.run(Thread.java:748) > > > *16:14:32* master60888| > > > *16:14:32* master60888|Mar 18, 2019 4:14:32 PM > > hudson.model.UpdateCenter$DownloadJob run > > > > > > > > > I'm "installing" our plugin under test using: > > > export LOCAL_JARS=$PWD/sonar-$CURRENT_VERSION.hpi > > > > > > and I have checked earlier logs and the MockUpdateCenter > > seems to work fine: > > > > > > *16:13:38* INFO: Installing plugins for test: [sonar, > > filesystem_scm, plain-credentials] > > > *16:13:38* > > Downloadinghttps:// > updates.jenkins-ci.org/update-center.json?version=2.107.3 > > < > http://updates.jenkins-ci.org/update-center.json?version=2.107.3> > > to /tmp/update-center-2.107.3.jsonp > > > *16:13:40* Overriding sonar 2.8.1 with local build of > 2.9.0.2184 > > > > > > [...] > > > > > > *16:13:40* Mar 18, 2019 4:13:40 PM > > org.jenkinsci.test.acceptance.update_center.MockUpdateCenter > > updating > > > *16:13:40* INFO: for sonar updating version from 2.8.1 to > > 2.9.0.2184 > > > *16:13:40* Mar 18, 2019 4:13:40 PM > > org.jenkinsci.test.acceptance.update_center.MockUpdateCenter > > updating > > > *16:13:40* INFO: for sonar updating gav from > > org.jenkins-ci.plugins:sonar:2.8.1 to > > org.jenkins-ci.plugins:sonar:2.9.0.2184 > > > > > > > > > I have looked at the code and I found that MockUpdateCenter > > is only > > > replacing the sha512: > > > > > > https://github.com/jenkinsci/acceptance-test-harness/blob/9551635b62f9a6456d1fae8d2c02dfd0f4cfe2c8/src/main/java/org/jenkinsci/test/acceptance/update_center/MockUpdateCenter.java#L135 > > > > > > Then I discovered that support of sha512 was only added > > "recently": > > > > > > https://github.com/jenkinsci/jenkins/commit/6dc32977fc6772a2e18452672d69b8b93ea3e832 > > > > > > In our ITs we are testing a matrix including the older > > supported Jenkins > > > version and the more recent LTS. What about changing the > > > MockUpdateCenter to also support overriding sha1 to support > > older > > > Jenkins versions? > > > > > > ++ > > > > > > Julien Henry | SonarSource > > > > > > Developer > > > > > > https://sonarsource.com <https://sonarsource.com/> > > > > > > > > > Le lun. 18 mars 2019 à 08:05, Oliver Gondža > > <[email protected] <mailto:[email protected]> > > > <mailto:[email protected] <mailto:[email protected]>>> a > écrit : > > > > > > On 17/03/2019 21.49, Julien HENRY wrote: > > > > > > > I'm really surprised some existing acceptance tests > > but ours are > > > > depending on installing the SonarScanner. Would it be > > possible to > > > submit > > > > a PR removing the file, and see what happen? Is the > > full test suite > > > > executed on PRs? > > > > > > Extra cere must be taken to make sure this is not going > > to cause a > > > problem somewhere, but yes, why not. > > > > > > Thanks for the 2 PRs. One was merged right away, the > > other one needs > > > some polishing but looks good as well. > > > > > > -- > > > oliver > > > > > > > > > -- > > oliver > > > > > -- > oliver > -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAD9wyxGBGChLY0VZXpQyRFqG2fCFZFhSTzOLX97-CCyK29jS%2Bw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
