You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by js...@apache.org on 2016/01/30 04:49:09 UTC

reef git commit: [REEF-1154] Create release script for website update

Repository: reef
Updated Branches:
  refs/heads/master c00b4430f -> df79b80e0


[REEF-1154] Create release script for website update

This change:
 * updates release.js to have fewer hardcoded URLs
   and more URLs deduced from version.
 * creates script update_website.py which updates all website files
   necessary for new version display.
 * does several minor changes to simplify the update.

JIRA:
  [REEF-1154](https://issues.apache.org/jira/browse/REEF-1154)

Pull request:
  This closes #800


Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/df79b80e
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/df79b80e
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/df79b80e

Branch: refs/heads/master
Commit: df79b80e01398e6ac5da07d1052d9d982760a747
Parents: c00b443
Author: Mariia Mykhailova <ma...@apache.org>
Authored: Mon Jan 25 18:29:15 2016 -0800
Committer: Jason (Joo Seong) Jeong <cu...@gmail.com>
Committed: Sat Jan 30 12:01:25 2016 +0900

----------------------------------------------------------------------
 dev/change_version.py                    |   9 +-
 dev/update_website.py                    | 156 ++++++++++++++++++++++++++
 website/src/site/resources/js/release.js |  72 +++++-------
 website/src/site/site.xml                |   4 +-
 4 files changed, 191 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/dev/change_version.py
----------------------------------------------------------------------
diff --git a/dev/change_version.py b/dev/change_version.py
index 80ef30f..3bdfc80 100644
--- a/dev/change_version.py
+++ b/dev/change_version.py
@@ -85,6 +85,7 @@ def change_pom(file, new_version):
         if not line: 
             break
         changed_str += line
+    f.close()
 
     f = open(file, 'w')
     f.write(changed_str)
@@ -111,6 +112,7 @@ def change_constants_cs(file, new_version):
             changed_str += line.replace(old_version, new_version)
         else:
             changed_str += line
+    f.close()
 
     f = open(file, 'w')
     f.write(changed_str)
@@ -138,6 +140,7 @@ def change_assembly_info_cs(file, new_version):
             changed_str += line.replace(old_version, new_version)
         else:
             changed_str += line
+    f.close()
 
     f = open(file, 'w')
     f.write(changed_str)
@@ -159,6 +162,7 @@ def read_is_snapshot(file):
                 return True
             else:
                 return False
+    f.close()
 
 """
 Change lang/cs/build.props for the release branch
@@ -182,6 +186,7 @@ def change_build_props(file, is_snapshot):
             changed_str += line.replace(old_snapshot_number, "00")
         else:
             changed_str += line
+    f.close()
 
     f = open(file, 'w')
     f.write(changed_str)
@@ -210,6 +215,7 @@ def change_shaded_jar_name(file, new_version):
             changed_str += line.replace(m2.group(1), new_version)
         else:
             changed_str += line
+    f.close()
 
     f = open(file, 'w')
     f.write(changed_str)
@@ -234,6 +240,7 @@ def change_project_number_Doxyfile(file, new_version):
             changed_str += line.replace(old_version, new_version)
         else:
             changed_str += line
+    f.close()
 
     f = open(file, 'w')
     f.write(changed_str)
@@ -241,7 +248,7 @@ def change_project_number_Doxyfile(file, new_version):
 
 
 """
-Change version of every pom.xml, every AsssemblyInfo.cs, 
+Change version of every pom.xml, every AssemblyInfo.cs,
 Constants.cs, AssemblyInfo.cpp, run.cmd and Resources.xml
 """
 def change_version(reef_home, new_version, pom_only):

http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/dev/update_website.py
----------------------------------------------------------------------
diff --git a/dev/update_website.py b/dev/update_website.py
new file mode 100644
index 0000000..91cb5fd
--- /dev/null
+++ b/dev/update_website.py
@@ -0,0 +1,156 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""
+This script updates website files with the new release information.
+
+(How to run)
+python update_website <reef_home> <reef_version> <sha512> <release_notes_link>
+
+You can also see how to run the script with "python update_website.py -h"
+
+(Example)
+python update_website ~/reef 0.14.0 8f542ae...c4fed7 https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315820&version=12333768
+"""
+
+
+import os
+import re
+import sys
+import argparse
+import datetime
+
+"""
+doap.rdf
+"""
+def update_doap(file, new_version):
+    changed_str = ""
+    after_release_tag = False
+
+    f = open(file, 'r')
+
+    # keep the part of the file before <release> tag as is
+    # necessary because name and created tags appear several times in the file
+    while True:
+        line = f.readline()
+        if not line:
+            break
+        if "<release>" in line:
+            after_release_tag = True
+        # update <name>, <revision> and <created> tags
+        if (("<name>" in line) or ("<revision>" in line)) and after_release_tag:
+            r = re.compile('>(.*?)<')
+            m = r.search(line)
+            old_version = m.group(1)
+            line = line.replace(old_version, new_version)
+        if "<created>" in line and after_release_tag:
+            r = re.compile('<created>(.*?)</created>')
+            m = r.search(line)
+            old_date = m.group(1)
+            new_date = datetime.date.today().strftime('%Y-%m-%d')
+            line = line.replace(old_date, new_date)
+        changed_str += line
+    f.close()
+
+    f = open(file, 'w')
+    f.write(changed_str)
+    f.close()
+    print file
+
+
+"""
+downloads.md: replace all release information with new one
+"""
+def update_downloads(file, new_version, sha512, notes_link):
+    changed_str = ""
+    old_version = ""
+    f = open(file, 'r')
+    while True:
+        line = f.readline()
+        if not line:
+            break
+        # figure out old version
+        if "selected" in line:
+            r = re.compile('>(.*?)<')
+            m = r.search(line)
+            old_version = m.group(1)
+        if old_version != "" and old_version in line:
+            line = line.replace(old_version, new_version)
+        if "selected" in line:
+            # write this line and construct new one
+            changed_str += line
+            line = '    <option value="' + old_version + '">' + old_version + '</option>\n'
+        if "sha512Text" in line:
+            r = re.compile('<span id="sha512Text">(.*?)</span>')
+            m = r.search(line)
+            line = line.replace(m.group(1), sha512)
+        if "releaseNotesLink" in line:
+            r = re.compile('href="(.*?)"')
+            m = r.search(line)
+            line = line.replace(m.group(1), notes_link)
+        if "dotnetApiLink" in line:
+            r = re.compile('<span id="dotnetApiLink">(.*?)</span>')
+            m = r.search(line)
+            line = line.replace(m.group(1), '<a href="apidoc_net/' + new_version + '/index.html">.NET API</a>')
+        changed_str += line
+    f.close()
+
+    f = open(file, 'w')
+    f.write(changed_str)
+    f.close()
+    print file
+
+
+"""
+release.js: add releaseSha512 and releaseNotes for new version
+"""
+def update_release_js(file, new_version, sha512, notes_link):
+    changed_str = ""
+    f = open(file, 'r')
+    while True:
+        line = f.readline()
+        if not line:
+            break
+        if "var releaseSha512" in line:
+            changed_str += line
+            changed_str += '    "' + new_version + '": "' + sha512 + '",\n'
+            continue
+        if "var releaseNotes" in line:
+            changed_str += line
+            changed_str += '    "' + new_version + '": "' + notes_link + '",\n'
+            continue
+        changed_str += line
+    f.close()
+
+    f = open(file, 'w')
+    f.write(changed_str)
+    f.close()
+    print file
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(description="Script for updating REEF website with information about new release.")
+    parser.add_argument("reef_home", type=str, help="REEF home")
+    parser.add_argument("reef_version", type=str, help="REEF version")
+    parser.add_argument("sha512", type=str, help="SHA512 of .tar.gz file")
+    parser.add_argument("notes_link", type=str, help="Link to release notes for the version")
+    args = parser.parse_args()
+
+    reef_home = os.path.abspath(args.reef_home)
+    update_doap(reef_home + "/doap.rdf", args.reef_version)
+    update_release_js(reef_home + "/website/src/site/resources/js/release.js", args.reef_version, args.sha512, args.notes_link)
+    update_downloads(reef_home + "/website/src/site/markdown/downloads.md", args.reef_version, args.sha512, args.notes_link)

http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/website/src/site/resources/js/release.js
----------------------------------------------------------------------
diff --git a/website/src/site/resources/js/release.js b/website/src/site/resources/js/release.js
index c98161d..2bc74c3 100644
--- a/website/src/site/resources/js/release.js
+++ b/website/src/site/resources/js/release.js
@@ -16,19 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var releaseDirect = {
-    "0.10.0-incubating": "http://www.apache.org/dist/reef/0.10.0-incubating/apache-reef-0.10.0-incubating.tar.gz",
-    "0.11.0-incubating": "http://www.apache.org/dist/reef/0.11.0-incubating/apache-reef-0.11.0-incubating.tar.gz",
-    "0.12.0-incubating": "http://www.apache.org/dist/reef/0.12.0-incubating/apache-reef-0.12.0-incubating.tar.gz",
-    "0.13.0-incubating": "http://www.apache.org/dist/reef/0.13.0-incubating/apache-reef-0.13.0-incubating.tar.gz"
-};
-
-var releaseMirror = {
-    "0.10.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.10.0-incubating",
-    "0.11.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.11.0-incubating",
-    "0.12.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.12.0-incubating",
-    "0.13.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.13.0-incubating"
-};
 
 var releaseSha512 = {
     "0.10.0-incubating": "53844174f701a4c0c99964260c7abb4f8ef9d93aa6b8bdddbca37082e0f5754db5b00e2ae1fdd7732735159df8205a82e7a4dde2ef5abf2ca3e5d7dc43eb62fb",
@@ -44,42 +31,33 @@ var releaseNotes = {
     "0.13.0-incubating": "https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315820&version=12332972"
 };
 
-var javaApi = {
-    "0.10.0-incubating": "apidocs/0.10.0-incubating/index.html",
-    "0.11.0-incubating": "apidocs/0.11.0-incubating/index.html",
-    "0.12.0-incubating": "apidocs/0.12.0-incubating/index.html",
-    "0.13.0-incubating": "apidocs/0.13.0-incubating/index.html"
-};
-
-var dotnetApi = {
-};
-
 function setReleaseLink() {
     var releaseVersion = this.document.getElementById("selectRelease").value;
-    if (releaseDirect[releaseVersion] == undefined) {
-        this.document.getElementById("listRelease").style.display= "none";
+    this.document.getElementById("listRelease").style.display = "block";
+
+    var releaseDirectStr = "http://www.apache.org/dist/reef/" + releaseVersion + "/apache-reef-" + releaseVersion + ".tar.gz";
+    this.document.getElementById("directLink").setAttribute("href", releaseDirectStr);
+
+    var releaseMirror = "http://www.apache.org/dyn/closer.cgi/reef/" + releaseVersion;
+    this.document.getElementById("mirrorLink").setAttribute("href", releaseMirror);
+    this.document.getElementById("sha512Text").innerHTML = releaseSha512[releaseVersion];
+    this.document.getElementById("releaseNotesLink").setAttribute("href", releaseNotes[releaseVersion]);
+
+    var directReleaseStrSplit = releaseDirectStr.split("/");
+    this.document.getElementById("directLink").innerHTML =
+        directReleaseStrSplit[directReleaseStrSplit.length - 1];
+    this.document.getElementById("verificationLink").setAttribute("href",
+        releaseDirectStr.slice(0, (0 - directReleaseStrSplit[directReleaseStrSplit.length - 1].length)));
+
+    var javaApiLink = "apidocs/" + releaseVersion + "/index.html";
+    this.document.getElementById("javaApiLink").setAttribute("href", javaApiLink);
+    if (releaseVersion.indexOf("incubating") > -1) {
+        // special case: for versions 0.13.0 and earlier (incubation releases) .NET API documentation is not available
+        this.document.getElementById("dotnetApiLink").innerHTML = ".NET API available since release 0.14.0";
     } else {
-        this.document.getElementById("listRelease").style.display = "block";
-
-        var releaseDirectStr = releaseDirect[releaseVersion];
-        this.document.getElementById("directLink").setAttribute("href", releaseDirectStr);
-        this.document.getElementById("mirrorLink").setAttribute("href", releaseMirror[releaseVersion]);
-        this.document.getElementById("sha512Text").innerHTML = releaseSha512[releaseVersion];
-        this.document.getElementById("releaseNotesLink").setAttribute("href", releaseNotes[releaseVersion]);
-
-        var directReleaseStrSplit = releaseDirectStr.split("/");
-        this.document.getElementById("directLink").innerHTML =
-            directReleaseStrSplit[directReleaseStrSplit.length - 1];
-        this.document.getElementById("verificationLink").setAttribute("href",
-            releaseDirectStr.slice(0, (0 - directReleaseStrSplit[directReleaseStrSplit.length - 1].length)));
-
-        this.document.getElementById("javaApiLink").setAttribute("href", javaApi[releaseVersion]);
-        if (dotnetApi[releaseVersion] == undefined) {
-            // special case: for versions 0.13.0 and earlier .NET API documentation is not available
-            this.document.getElementById("dotnetApiLink").innerHTML = ".NET API available since release 0.14.0";
-        } else {
-            this.document.getElementById("dotnetApiLink").innerHTML = "<a href=" + dotnetApi[releaseVersion] + ">.NET API</a>";
-        }
+        var dotnetApiLink = "apidoc_net/" + releaseVersion + "/index.html";
+        this.document.getElementById("dotnetApiLink").innerHTML = "<a href=" + dotnetApiLink + ">.NET API</a>";
     }
-
 }
+
+setReleaseLink();

http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/website/src/site/site.xml
----------------------------------------------------------------------
diff --git a/website/src/site/site.xml b/website/src/site/site.xml
index 700cfc7..1fc1ad4 100644
--- a/website/src/site/site.xml
+++ b/website/src/site/site.xml
@@ -60,7 +60,6 @@ under the License.
   
     <body>   
         <head>
-            <script src="js/release.js" type="text/javascript"></script>
             <script>
                 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -126,7 +125,8 @@ under the License.
 		        of The Apache Software Foundation. All other marks mentioned may be trademarks or registered
 		        trademarks of their respective owners.
 	        </div>
-        </footer>                
+            <script src="js/release.js" type="text/javascript"></script>
+        </footer>
         <!-- 
         	this command gives a bunch of information about the Maven site creation project
         	<menu ref="reports"/>