Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-24117

Support for proper shared clients/workspaces

XMLWordPrintable

    • Icon: New Feature New Feature
    • Resolution: Unresolved
    • Icon: Major Major
    • core
    • None

      I have recently joined a company using Jenkins after spending many years being a CI admin using TeamCity and Electric commander.

      Both these systems had the idea of a shared workspace/client.
      This means if 100 builds use the same client spec then they will all use the same workspace on the same "executor"
      This means that for every unique slave-executor pair there is just a single client spec on the server side and a single workspace on the slave-executor pair.

      Currently is seems that if i have 100 jobs all using the same P4 stream for example, 100 client specs will be created on the server and 100 copies of the same source code will be on EACH executor.
      So if i have a build machine with 16 executors , then i will have 16*100 times the same source code on the slave.
      If i now want to test on 3 different streams then that will then be 16*100*3 times the same source code.

      What we would need is as follows:
      Job A uses stream X
      Job B uses stream X

      Job A is triggered on slave M1, executor 1 using stream X:
      Check if client spec M1_1_X is created, if not create, otherwise sync.
      Workspace location is also some known path \M1_1_X\

      Job B is now triggered on same slave, same executor
      Since M1_1_X client and workspace exist an incremental sync can be done

      The advantage of this is that the workspace and client is only created for each unique slave-executor pair, the code is only synced once full and then incremented, the P4 server stores much less information.

      Each Job just keeps track of the CL number it last synced to and does the diff to the latest CL. (there might be nothing to sync since a previous job has synced to head)

      I am only after P4 stream functionality at the moment since it is much easier then normal client specs and custom views.

      So what i would need is a way to tell a Jenkins Job to use a custom workspace location based on a known naming convention and the P4 plugin to create a client spec per slave-executor and track the changes.

            Unassigned Unassigned
            mornejoubert Morne Joubert
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: