]> source.dussan.org Git - gitblit.git/commitdiff
Added release script template and build.xml adjustments
authorJames Moger <james.moger@gitblit.com>
Sun, 14 Jul 2013 16:04:52 +0000 (12:04 -0400)
committerJames Moger <james.moger@gitblit.com>
Sun, 14 Jul 2013 16:04:52 +0000 (12:04 -0400)
build.xml
release.template [new file with mode: 0644]

index ee4542c5d047051e80cd1b45132fc113c13083aa..713578f9c506ac892f566dfac38915592f40c6c9 100644 (file)
--- a/build.xml
+++ b/build.xml
                Update the gh-pages branch with the current site\r
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
        -->\r
-       <target name="updateGhPages" depends="buildSite">\r
+       <target name="updateGhPages">\r
                <!-- Build gh-pages branch -->\r
                <mx:ghpages repositorydir="${basedir}" obliterate="true" />\r
        </target>\r
                Publish binaries to Google Code\r
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
        -->\r
-       <target name="publishBinaries" depends="clean,buildGO,buildWAR,buildExpress,buildFederationClient,buildManager,buildApiLibrary" description="Publish the Gitblit binaries to Google Code">\r
+       <target name="publishBinaries" description="Publish the Gitblit binaries to Google Code">\r
 \r
                <echo>Uploading Gitblit ${project.version} binaries</echo>\r
 \r
        <!--\r
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \r
                Publish site to site hosting service\r
-               You must add ext/commons-net-1.4.0.jar to your ANT classpath.\r
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
        -->\r
-       <target name="publishSite" depends="clean,buildSite,updateGhPages" description="Publish the Gitblit site to a webserver (requires ext/commons-net-1.4.0.jar)" >\r
+       <target name="publishSite" depends="clean,buildSite,updateGhPages" description="Publish the Gitblit site to a host" >\r
 \r
                <echo>Uploading Gitblit ${project.version} website</echo>\r
 \r
-               <ftp server="${ftp.server}"\r
+               <mx:ftp server="${ftp.server}"\r
                        userid="${ftp.user}"\r
                        password="${ftp.password}"\r
                        remotedir="${ftp.dir}"\r
                        passive="true"\r
                        verbose="yes">\r
                        <fileset dir="${project.siteTargetDirectory}" />\r
-               </ftp>\r
+               </mx:ftp>\r
        </target>\r
 \r
 \r
-       <!--\r
-               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \r
-               Compile from source, publish binaries, and build & deploy site\r
-               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
-       -->\r
-       <target name="publishAll" depends="publishBinaries,publishSite" />\r
-\r
-       \r
        <!--\r
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \r
                Tag a new version and prepare for the next development cycle.\r
                <!-- release -->\r
                <property name="dryrun" value="false" />\r
                <mx:version stage="release" dryrun="${dryrun}" />               \r
+               <property name="project.tag" value="v${project.version}" />\r
                <!-- commit build.moxie & releases.moxie (automatic) -->\r
                <mx:commit showtitle="no">\r
                    <message>Prepare ${project.version} release</message>\r
-                       <tag name="v${project.version}">\r
+                       <tag name="${project.tag}">\r
                                <message>${project.name} ${project.version} release</message>\r
                        </tag>\r
                </mx:commit>\r
 \r
+               <!-- create the release process script -->\r
+               <mx:if>\r
+                       <os family="windows" />\r
+                       <then>\r
+                               <!-- Windows PowerShell script        -->\r
+                               <!-- set-executionpolicy remotesigned -->\r
+                               <property name="recipe" value="release_${project.version}.ps1" />\r
+                       </then>\r
+                       <else>\r
+                               <!-- Bash script -->\r
+                               <property name="recipe" value="release_${project.version}.sh" />\r
+                       </else>\r
+               </mx:if>\r
+               <delete file="${recipe}" failonerror="false" quiet="true" verbose="false" />\r
+               <!-- Work-around for lack of proper ant property substitution in copy -->\r
+               <property name="dollar" value="$"/>\r
+               <copy file="release.template" tofile="${recipe}">\r
+                       <filterset begintoken="${dollar}{" endtoken="}">\r
+                               <filter token="project.version" value="${project.version}" />\r
+                               <filter token="project.commitId" value="${project.commitId}" />\r
+                               <filter token="project.tag" value="${project.tag}" />\r
+                       </filterset>\r
+               </copy>\r
+               <chmod file="${recipe}" perm="ugo+rx" />\r
+\r
                <!-- next cycle -->\r
                <mx:version stage="snapshot" incrementNumber="incremental" dryrun="${dryrun}" />\r
                <mx:commit showtitle="no">\r
                    <message>Reset build identifiers for next development cycle</message>\r
-               </mx:commit>\r
+               </mx:commit>            \r
        </target>\r
 \r
                \r
diff --git a/release.template b/release.template
new file mode 100644 (file)
index 0000000..8342bb5
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash\r
+#\r
+# ${project.version} release script\r
+#\r
+\r
+# go back one commit to RELEASE commit\r
+echo ""\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo "Checking out ${project.version} RELEASE commit ${project.commitId}"\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo ""\r
+git checkout ${project.commitId}\r
+\r
+# build RELEASE artifacts\r
+echo ""\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo "Building ${project.version} RELEASE artifacts"\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo ""\r
+ant clean buildAll\r
+\r
+# upload artifacts\r
+echo ""\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo "Uploading ${project.version} artifacts"\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo ""\r
+ant publishBinaries\r
+\r
+# build site, update gh-pages, and ftp upload site to hosting provider\r
+echo ""\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo "Building ${project.version} website"\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo ""\r
+ant publishSite\r
+\r
+# return to project master\r
+echo ""\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo "Checking out master"\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo ""\r
+git checkout master\r
+\r
+# push project branches\r
+echo ""\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo "Pushing master, gh-pages, and tag ${project.tag}"\r
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\r
+echo ""\r
+git push origin master gh-pages tag ${project.tag}\r