[ 
https://issues.jenkins-ci.org/browse/JENKINS-11716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=158929#comment-158929
 ] 

Steve Roth edited comment on JENKINS-11716 at 2/12/12 10:46 PM:
----------------------------------------------------------------

One shell script workaround for renaming the fileystem parts of job (presumes a 
path like ${ITEM_FULLNAME}/builds is listed below.   Save as 'renamejob.sh'.

First, backup your original job name directory, just in case.
Next, rename the job in the Jenkins UI.
Then run this script
Last, restart Jenkins (required).

Usage: renameJob.sh oldJobName newJobName pathToBuildArtifactDir

#!/bin/sh -eu

OLDJOB=$1
NEWJOB=$2
JOBROOT=$3

if [ ! -d $JOBROOT ]; then
   echo "ERROR: directory at JOBROOT=$JOBROOT does not exist"
   exit 1
fi

if [ ! -d $JOBROOT/$NEWJOB ]; then
   echo "ERROR: newjob directory at $JOBROOT/$NEWJOB does not exist"
   exit 1
fi

if [ ! -d $JOBROOT/$OLDJOB ]; then
   echo "ERROR: oldjob directory at $JOBROOT/$OLDJOB does not exist"
   exit 1
fi

echo "RENAMING JOB from $OLDJOB ==> $NEWJOB"

set +e
rm -f $JOBROOT/last*
rm -rf $JOBROOT/$NEWJOB/builds/*
mv $JOBROOT/$OLDJOB/* $JOBROOT/$NEWJOB
set -e

echo "UPDATING RUNS..."
for RUNDIR in `ls -d $JOBROOT/$NEWJOB/builds/*-*-*`; do
  echo "... UPDATING RUN AT $RUNDIR"
  if [ -f $JOBROOT/$RUNDIR/junitResult.xml ]; then
    sed -i "s/$OLDJOB/$NEWJOB/g" $JOBROOT/$RUNDIR/junitResult.xml
  fi
  if [ -f $JOBROOT/$RUNDIR/build.xml ]; then
    sed -i "s/$OLDJOB/$NEWJOB/g" $JOBROOT/$RUNDIR/build.xml
  fi
done

                
      was (Author: sroth):
    One shell script workaround for renaming a job (presumes a path like 
${ITEM_FULLNAME}/builds is listed below.   Save as 'renamejob.sh'
Note this requires you to restart Jenkins after running the shell script:

Usage: renameJob.sh oldJobName newJobName pathToBuildArtifactDir

#!/bin/sh -eu

OLDJOB=$1
NEWJOB=$2
JOBROOT=$3

if [ ! -d $JOBROOT ]; then
   echo "ERROR: directory at JOBROOT=$JOBROOT does not exist"
   exit 1
fi

if [ ! -d $JOBROOT/$NEWJOB ]; then
   echo "ERROR: newjob directory at $JOBROOT/$NEWJOB does not exist"
   exit 1
fi

if [ ! -d $JOBROOT/$OLDJOB ]; then
   echo "ERROR: oldjob directory at $JOBROOT/$OLDJOB does not exist"
   exit 1
fi

echo "RENAMING JOB from $OLDJOB ==> $NEWJOB"

set +e
rm -f $JOBROOT/last*
rm -rf $JOBROOT/$NEWJOB/builds/*
mv $JOBROOT/$OLDJOB/* $JOBROOT/$NEWJOB
set -e

echo "UPDATING RUNS..."
for RUNDIR in `ls -d $JOBROOT/$NEWJOB/builds/*-*-*`; do
  echo "... UPDATING RUN AT $RUNDIR"
  if [ -f $JOBROOT/$RUNDIR/junitResult.xml ]; then
    sed -i "s/$OLDJOB/$NEWJOB/g" $JOBROOT/$RUNDIR/junitResult.xml
  fi
  if [ -f $JOBROOT/$RUNDIR/build.xml ]; then
    sed -i "s/$OLDJOB/$NEWJOB/g" $JOBROOT/$RUNDIR/build.xml
  fi
done

                  
> Renaming a job does not rename the build record root dir, for a Jenkins 
> instance configured with this feature
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: JENKINS-11716
>                 URL: https://issues.jenkins-ci.org/browse/JENKINS-11716
>             Project: Jenkins
>          Issue Type: Bug
>          Components: core
>    Affects Versions: current
>            Reporter: Steve Roth
>
> We have a Jenkins instance (1.438) using the 'Build Record Root Directory' 
> feature, so we can specify an alternate directory for storing build artifacts 
> outside of the JENKINS HOME directory.
> This generally works fine.  However, I noticed that when I rename a job, I 
> lose the previous build records.
> I see a new build record directory is created, beneath the specified 'Build 
> Record Root Directory'.  However, the old build directory also exists, 
> containing the previous records.  They are not moved over to the new 
> directory.
> In other words, when the 'Build Record Root Directory' feature is enabled, 
> renaming a project causes the project's build records to be lost.
> Current workaround is to move the build record files over and use sed to 
> replace the project name in them, then restart Jenkins.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to