Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Wiki Markup
{hudsonjenkins-plugin-info:pluginId=svn-tag}
Note

Please note the version 1.10 is compatible with hudson 279 or later. For older builds, please use 1.9.


Warning

This plugin manages only tagging triggered by a successful build. This plugin is NOT related to "Tag this build" link.

Image Added

What does this do?

Excerpt

This plugin automatically performs subversion tagging (technically speaking svn copy) on successful build.

This is useful when you want to access the stable codebase. The Subversion Plugin has support for manually tagging a particular build via Hudson's user interface. This plugin is for automatic tagging as part of the build.

How tagging works?

  1. Read Subversion authentication information from Hudson's Jenkins’ Subversion SCM configuration.
  2. Delete the existing tag if exists.
  3. Perform URL to URL svn copy.

Please note that svn copy is cheap because it doesn't duplicate file contents when not necessary. URL to URL copy is also fast because there is no data transfer from Hudson Jenkins to Subversion, unlike maven scm plugin's "tag" goal. The tag base URL must be created in advance.

Configuration

Subversion Authentication

Image Removed
When you specify subversion repo a Subversion repository URL, starting with version 2.0 of the Subversion plugin, you are requested to enter authentication information. The values are stored in hudson.scm.SubversionSCM.xml in HUDSON_HOME directory. allowed to select credentials used for the checkout or update. This plugin obtains the same authentication information directly from Hudson core's Subversion SCM class so the principal and credential specified here is used for subversion authenticationthe Subversion plugin, meaning it must have write access to the repository.

System configuration

Basic configuration for the project with one svn location

...

  • The template of comment recognizes groovy syntax. Map returned from hudson.model.AbsutractBuild#getEnvVars(), System Properties, and repository URL are bound so that you can refer them as env, sys, and repoURL respectively. For repoURL, see #repoURL.
  • The value of Map (and Properties) can be refered like this.
    Code Block
    java
    java
    Build: ${env['BUILD_TAG']} on OS ${sys['os.name']} ${sys['os.version']}.
    
  • Compilation happens when the focus is moved from the text field. Please check if the quotes, braces, and brackets are balanced when you get a compilation error. A closing single quote is missing after BUILD_TAG in the case below.
  • Base tag URL's hostname must be identical with the one of Subversion URL. Different notation (e.g. raw IP address and hostname, short hostname and fully qualified hostname, or using alias) is recognized as different servers so that please make sure to use the identical hostname. Job name is no longer implicitly appended to tag base URL since version 1.2. Please use '$\{env\['JOB_NAME'\]\}' if you need to use job name as a part of tag URL.

    Note
    titleJob name in tag base URL

    Wiki Markup
Configuration for the project with multiple svn locations

...

  • The location URL path list delimited by "/" (slash) is bound to groovy runtime as "repoURL" since version 1.6. Any path can be embedded as a part of tag base URL. Suppose you have the following hierarchy.
    Code Block
    svnrepo/
    |-- branches
    |-- tags
    `-- trunk
        |-- project1
        |   |-- a.txt
        |   |-- subproject1
        |   |   `-- subproject1.txt
        |   `-- subproject2
        |       `-- subproject2.txt
        `-- project2
            |-- subproject21
            |   `-- subproject21.txt
            `-- subproject22
                `-- subproject22.txt
    
    You specify two locations in subversion configuration.
    Code Block
    location 1: http://svn.example.com/svn/svnrepo/trunk/project1
    location 2: http://svn.example.com/svn/svnrepo/trunk/project2
    
    Then specify the tag base URL embedding a part of repoURL as tag base URL.
    Code Block
    http://svn.example.com/svn/svnrepo/tags/${env['BUILD_TAG']}/${repoURL[-1]}
    (or)
    ../tags/${env['BUILD_TAG']}/${repoURL[-1]}
    
    Wiki Markup
    You will get the following tags. Please note that repoURL contains {{\[http,svn.example.com,svn,svnrepo,trunk,project1\]}} as List in case of the example above, and groovy allows to access the element from the end by specifying negative index. For example, {{repoURL\[-2\]}} returns {{trunk}} as the value.
    Code Block
    svnrepo/
    |-- branches
    |-- tags
        |-- hudson-svnrepo-3
        |   |   |-- project1
        |   |   |   |-- a.txt
        |   |   |   |-- subproject1
        |   |   |   |   `-- subproject1.txt
        |   |   |   `-- subproject2
        |   |   |       `-- subproject2.txt
        |   |   `-- project2
        |   |       |-- subproject21
        |   |       |   `-- subproject21.txt
        |   |       `-- subproject22
        |   |           `-- subproject22.txt
    

...

  • Any authentication method supported by Hudson Subversion core (SubversionSCM.class) the Subversion plugin should work from v1.4, but haven't been tested. Please create an issue ticket if you successfully tag with the authentication methods other than username / password. Please contact me if you have problems with other authentication scheme.
  • Tagging for the project with multiple locations that are not symmetric and needed to be tagged in the different depth are not supported yet. This should be able to be addressed by specifying tag base URL per location, but haven't implemented yet.

Support

Please create an issue ticket and specify svn-tag as the sub-component when you find bugs, improvement ideas, or create a patch.
Please include the version of svn-tag plugin, subversion repository URL location(s), tag base URL, and the layout of your svn repositories.
"Tag this build" link appeared in a build screen is NOT related to this plugin. Please submit the report to subversion instead.

History

Jul 7 2015 Version 1.18

Jul 17 2014 Version 1.17

  • JENKINS-21797 Compatibility with authentication in 2.x versions of the Subversion plugin.
  • Better diagnostics of errors, including PR #3.
  • Fixed improper version range dependency.

01/12/12

  • k2nakamura no longer actively maintain this plugin. Instead, V.Renjith stepped up and take the ownership of the plugin. Thank you Renjith.

11/02/11 Version 1.16

Warning

This version requires Hudson 1.421 or later.

07/27/11 Version 1.15

  • Merged the changes to address the issue described in JENKINS-10325. Thanks to Carsten Klein.
Warning

This version requires Hudson 1.420 or later.

03/26/10 Version 1.14

02/02/10 Version 1.13

  • Update code for more recent Hudson.
    Warning

    This version requires Hudson 1.319 or later.

09/21/09 Version 1.12

  • Fixed URL escape issue reported in JENKINS-4453.
  • Added text fields for subversion comment used when deleting an old tag and creating intermediate tag directory requested by JENKINS-4507.

01/29/09 Version 1.10

  • Reflected the patch to support promoted build action. See ticket JENKINS-2924 for the details. Thanks for to Ertan.
    Warning

    This version requires Hudson build 1.279 or later.

08/14/08 Version 1.9

08/14/08 Version 1.8

  • Fixed issue JENKINS-2201 that the last path was created when the intermediate directories were created and resulted in the two levels of the last path.

...

  • Added the support for multiple subversion repositories.

05/11/08 Version 1.2

  • Added groovy expression support in tag base URL. The tag base URL no longer appends job name implicitly at the end since this version. Please add '$\{env\['JOB_NAME'\]\}' if you upgrade from version 1.1 and want to keep the original behavior.

    Warning
    titleChange in tag base URL

    Wiki Markup

04/18/08 Version 1.1

  • Fixed a path issue in help html links.

04/17/08 Version 1.0

  • Initial checkin.

7071

79808182