You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2012/11/26 22:06:31 UTC

svn commit: r1413843 - /jmeter/trunk/build.xml

Author: sebb
Date: Mon Nov 26 21:06:30 2012
New Revision: 1413843

URL: http://svn.apache.org/viewvc?rev=1413843&view=rev
Log:
Initial release of RC_upload and RC_publish targets

Modified:
    jmeter/trunk/build.xml

Modified: jmeter/trunk/build.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/build.xml?rev=1413843&r1=1413842&r2=1413843&view=diff
==============================================================================
--- jmeter/trunk/build.xml (original)
+++ jmeter/trunk/build.xml Mon Nov 26 21:06:30 2012
@@ -1543,6 +1543,164 @@ run JMeter unless all the JMeter jars ar
     </jar>
   </target>
 
+  <!--
+      Beanshell script to create the svnmucc scripts for upload, delete and publish.
+
+      The generated script assumes svnmucc is invoked with a root URL of
+      https://dist.apache.org/repos/dist/
+      This means that the jmeter files are at:
+      dev/jmeter/[binaries|source]
+      and
+      release/jmeter/[binaries|source]
+  -->
+  <scriptdef name="svnmuccScript" language="beanshell">
+    <classpath>
+      <pathelement location="${lib.dir}/${beanshell.jar}"/>
+      <!-- Needed to work with Java 1.5 -->
+      <pathelement location="${lib.dir}/${apache-bsf.jar}"/>
+      <pathelement location="${lib.dir}/${commons-logging.jar}"/>
+    </classpath>
+    <!-- type of script to create: upload, publish or delete -->
+    <attribute name="type"/>
+    <!-- Name of file to create -->
+    <attribute name="tempfile"/>
+    <![CDATA[
+    void upload(source) {
+      self.log("Will upload " + source + " to " + RCdir);
+      outstream.println("put");
+      outstream.println(source); // source
+      outstream.print("dev/jmeter/");
+      outstream.print(RCdir);
+      outstream.println(source); // dest
+      outstream.println();
+    }
+    void publish(source, targetDir) {
+      self.log("Will publish " + source + " to " + targetDir);
+      outstream.println("mv");
+      outstream.print("dev/jmeter/");
+      outstream.print(RCdir);
+      outstream.println(source); // source
+      outstream.print("release/jmeter/");
+      outstream.print(targetDir);
+      outstream.println(source); // source
+      outstream.println();
+    }
+    void processFiles(basename, targetDir) {
+      // combine all the extensions in one list
+      extensions = new String[]{".zip", ".zip.asc", ".zip.md5", ".zip.sha", ".tgz", ".tgz.asc", ".tgz.md5", ".tgz.sha"};
+      for (i = 0; i < extensions.length; ++i) {
+        extension = extensions[i];
+        srcFile = basename + extension;
+
+        if ("upload".equals(type)) {
+            upload(srcFile);
+        } else if ("publish".equals(type)) {
+            publish(srcFile, targetDir);
+        }
+      }
+    }
+      RC = project.getProperty("RC");
+      if (RC == null) {
+        self.fail("RC property must be defined!");
+      }
+      type = attributes.get("type");
+      version = project.getProperty("jmeter.version");
+      RCdir = "v"+version+"_"+RC+"/";
+      tempfile = attributes.get("tempfile");
+      self.log("Writing " + type + " script for version " + version + " " + RC + " into " + tempfile);
+      distname = project.getProperty("dist.name");
+      outstream = new PrintStream(new File(tempfile));
+      if ("upload".equals(type)) { // make the initial directory
+        outstream.println("mkdir");
+        outstream.print("dev/jmeter/");    
+        outstream.println(RCdir);
+        outstream.println();
+      }
+      processFiles(distname, "binaries/");
+      processFiles(distname+"_src", "source/");
+      // TODO could remove RCdir, but safer to do that manually after checking it is empty
+      outstream.close();
+    ]]>
+  </scriptdef>
+
+  <!--
+      Run svnnmucc against the svnpubsub distribution area 
+  -->
+  <macrodef name="svnmucc">
+    <attribute name="tempfile"/>
+    <attribute name="message"/>
+    <sequential>
+      <property name="repoType" value="test"/>
+      <condition property="repo" 
+            value="https://dist.apache.org/repos/dist/"
+            else="https://svn.apache.org/repos/asf/jmeter/test/" >
+        <equals arg1="live" arg2="${repoType}"/>
+      </condition>
+      <echo level="info">Processing @{tempfile} using svnmucc on repo: ${repoType}</echo>
+      <echo level="info">${repo}</echo>
+      <echo level="info">@{message}</echo>
+      <exec executable="svnmucc" dir="${dist.dir}" logerror="true" failonerror="true" failifexecutionfails="true">
+        <arg value="-n"/>
+        <arg value="-m"/>
+        <arg value="@{message}"/>
+        <arg value="-U"/>
+        <arg value="${repo}"/>
+        <arg value="-X"/>
+        <arg value="@{tempfile}"/>
+      </exec>
+    </sequential>
+  </macrodef>
+
+  <!-- 
+        Targets for deploying release candidates via svnpubsub.
+        
+        By default, deploys the artifacts under the JMeter test repo:
+        https://svn.apache.org/repos/asf/jmeter/test/
+        
+        The live repo is:
+        https://dist.apache.org/repos/dist/
+        
+        The JMeter files are to be found under:
+        
+        dev/jmeter/[source|binaries]
+        and
+        release/jmeter/[source|binaries]
+
+        Files that are expected to be present:
+        apache-jmeter-<version>.[tgz|zip] + [.asc|.md5|.sha]
+        apache-jmeter-<version>_src.[tgz|zip] + [.asc|.md5|.sha]
+
+        Must have SVN installed, in particular the svnmucc command-line client.
+
+
+        Pre-requisites:
+        username/password need to have been saved in the appropriate svn configuration file.
+        The distribution files must have been built and signed and placed in the dist/ directory.
+        If any required files are missing, then upload will fail.
+
+        Usage:
+              ant RC_upload  [-DrepoType=test|live] [-Djmeter.version=2.9] -DRC=RCn
+              ant RC_publish [-DrepoType=test|live] [-Djmeter.version=2.9] -DRC=RCn
+  -->
+
+  
+  <target name="RC_upload" description="Upload release candidate to svnpubsub area" depends="init-version">
+    <fail message="RC property must be defined!" unless="RC"/>
+    <echo>Version = ${jmeter.version} ${RC}</echo>
+    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
+    <property name="tempfile" value="svnmucc_upload.tmp"/>
+    <svnmuccScript type="upload" tempfile="${dist.dir}/${tempfile}"/>
+    <svnmucc tempfile="${tempfile}" message="Uploading release candidate ${dist.name} to dev area"/>
+  </target>
+
+  <target name="RC_publish" description="Publish release candidate from svnpubsub area" depends="init-version">
+    <echo>Version = ${jmeter.version} ${RC}</echo>
+    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
+    <property name="tempfile" value="svnmucc_publish.tmp"/>
+    <svnmuccScript type="publish" tempfile="${dist.dir}/${tempfile}"/>
+    <svnmucc tempfile="${tempfile}" message="Publishing ${dist.name} ${RC}"/>
+  </target>
+
   <!-- 
         Upload jars/poms/sigs to local (/target), snapshots or releases repos; default is local.
         By default, deploys the artifacts to target/deploy under JMeter home.