1

I have some system tests which do not need access to the tested code as they test already deployed applications. These tests and the source code of the tested applications lie in the same repository. The applications are deployed every here and there - fully independent of the tests. In Jenkins-CI I run the tests periodically. When a Jenkins test job is executed the svn repo is updated, tests are compiled and run against some already running applications. If a test run fails I can see the latest changes from the repo in Jenkins' Changes view, which often is an indicator of newly introduced bugs.

Now to the problem. I'd like to separate the tests from the application code repository. By doing so I'd have less wasted HDD space, faster test runs and cleaner file structure. But when checking out the tests from another repository I do not see the changelog of the application repository anymore.

Summed up, what I'd like to have is:

  1. Applications lie in applications repo
  2. Tests lie in test repo
  3. Jenkins only uses the test repo for checking out test code
  4. The "changes since last build" view shows changes done to the applications repo

Any ideas?

Hubert Grzeskowiak
  • 15,137
  • 5
  • 57
  • 74
  • Believe me, you don't want multiple repos. – Slav Oct 22 '14 at 13:45
  • I agree it might be very confusing to commit in one repo and get failed build for another repo. But sometimes your (acceptance) tests should be deliverable or have their own life cycle / release versions. – volkovs Oct 23 '14 at 16:01

1 Answers1

0

Just an idea:

  1. You still checkout your application repo, but disable compilation/test/installation plugins in some profile (everywhere but in "suite module"), also do not keep artifacts in Jenkins if any.
  2. You execute test from "suite module" as described here
  3. You build your testware in separate job.
Community
  • 1
  • 1
volkovs
  • 1,153
  • 2
  • 11
  • 24
  • Thanks. What do you mean with "profile" and "suite module"? – Hubert Grzeskowiak Oct 23 '14 at 09:12
  • I mean maven "profile" (configured to disable base build plugins) which you will use in your testware execution job at Jenkins. "Suite module" is entry point to execute your tests, located in separate jar/repo. Suite module is very lightweight, but is in your app repo. – volkovs Oct 23 '14 at 15:56
  • We're using ANT instead of Maven. The TestNG ANT tasks compile selected packages, but do not package any JARs or other archives. The point is I don't want system tests and application code in one repository and I don't want to check out both in every Jenkins job. We have one Jenkins job per test suite, which results in huge HDD consumption. – Hubert Grzeskowiak Oct 24 '14 at 16:23
  • So you want to check the changes not checking out the project. Is it correct? IMO the question is more related to svn group, not Jenkins. – volkovs Oct 27 '14 at 11:59
  • If it only was that simple. Getting the changes on command line is simple, but getting Jenkins to show those in the "changes" view seems impossible. – Hubert Grzeskowiak Oct 28 '14 at 08:57