This is an automated email from the ASF dual-hosted git repository.
aharui pushed a commit to branch release_practice
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/release_practice by this push:
new f649e0a start adding steps the RM will need to perform locally
f649e0a is described below
commit f649e0aca11a77fc4c50ef320ae611897d62c51e
Author: Alex Harui <[email protected]>
AuthorDate: Thu Feb 28 20:48:08 2019 -0800
start adding steps the RM will need to perform locally
---
releasesteps.xml | 466 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 466 insertions(+)
diff --git a/releasesteps.xml b/releasesteps.xml
new file mode 100644
index 0000000..a895020
--- /dev/null
+++ b/releasesteps.xml
@@ -0,0 +1,466 @@
+<?xml version="1.0"?>
+<!--
+
+ 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.
+
+-->
+
+<project name="CreateCompilerReleaseCandidate" default="main" basedir=".">
+
+ <!-- use -Dtag=<tag or commit hash> to build from other than the head -->
+
+ <!-- Required for OSX 10.6 / Snow Leopard Performance. -->
+ <!-- Java 7 on Mac requires OSX 10.7.3 or higher and is 64-bit only -->
+ <!-- local.d32 is set/used in build.properties so this needs to be done
first. -->
+ <condition property="local.d32" value="-d32">
+ <and>
+ <os family="windows"/>
+ <equals arg1="${sun.arch.data.model}" arg2="64"/>
+ <equals arg1="${os.arch}" arg2="x86_64"/>
+ <equals arg1="${ant.java.version}" arg2="1.6"/>
+ </and>
+ </condition>
+
+ <condition property="isMac" value="mac">
+ <os family="mac" />
+ </condition>
+ <condition property="isWindows" value="windows">
+ <os family="windows" />
+ </condition>
+ <condition property="isLinux" value="linux">
+ <and>
+ <os family="unix" />
+ <not>
+ <isset property="isMac" />
+ </not>
+ </and>
+ </condition>
+
+ <property name="rat.report" value="${basedir}/rat-report.txt"/>
+ <property name="apache.rat.jar" value="apache-rat-0.11.jar" />
+ <property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.11.jar" />
+ <property name="apache.rat.url"
value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/0.11"
/>
+ <property name="apache.rat.tasks.url"
value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat-tasks/0.11"
/>
+
+ <property file="${basedir}/local.properties" />
+ <property file="${basedir}/build.properties" />
+
+ <property environment="env"/>
+
+ <condition property="do.copy.downloads" >
+ <isset property="download.cache.dir" />
+ </condition>
+
+ <condition property="CRLF" value="%0D%0A">
+ <isset property="isWindows" />
+ </condition>
+ <property name="CRLF" value="%0A" />
+
+ <condition property="mvn" value="mvn.cmd">
+ <isset property="isWindows" />
+ </condition>
+ <property name="mvn" value="mvn" />
+
+ <available file="${env.ANT_HOME}/lib/${apache.rat.jar}"
+ type="file"
+ property="apache.rat.found"/>
+ <available file="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}"
+ type="file"
+ property="apache.rat.tasks.found"/>
+
+ <fail message="The release version number is not set. Specify
-Drelease.version=<release version (e.g. 0.9.0, 1.0.0, etc)>"
+ unless="release.version"/>
+
+ <target name="install-rat"
depends="install-rat.jar,install-rat.tasks.jar" />
+ <target name="install-rat.jar" unless="apache.rat.found">
+ <get src="${apache.rat.url}/${apache.rat.jar}"
dest="${env.ANT_HOME}/lib/${apache.rat.jar}" />
+ </target>
+ <target name="install-rat.tasks.jar" unless="apache.rat.tasks.found">
+ <get src="${apache.rat.url}/${apache.rat.tasks.jar}"
dest="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}" />
+ </target>
+
+ <target name="rat-taskdef" description="Rat taskdef">
+ <typedef resource="org/apache/rat/anttasks/antlib.xml"
+ uri="antlib:org.apache.rat.anttasks"
+ classpathref="anttask.classpath"/>
+ </target>
+
+ <target name="checkout_tag" if="tag" >
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="checkout" />
+ <arg value="${tag}" />
+ </exec>
+ </target>
+
+ <target name="Release_Step_003"
depends="get-temp-folder,download-artifacts,unzip-artifacts,build-source,validate-bits,sign,deploy-signed-artifacts">
+ </target>
+ <target name="get-temp-folder">
+ <input
+ message="Enter a temporary folder to store the downloaded artifacts:"
+ addproperty="artifactfolder"/>
+ <mkdir dir="${artifactfolder}" />
+ <available file="${artifactfolder}"
+ type="dir"
+ property="artifact.folder.found"/>
+ <fail message="Could not create artifact folder"
+ unless="artifact.folder.found"/>
+ </target>
+ <target name="download-artifacts" if="artifactfolder">
+ <get
src="http://apacheroyaleci.westus2.cloudapp.azure.com:8080/job/Royale_Release_Step_003/lastSuccessfulBuild/artifact/*zip*/archive.zip"
dest="${artifactfolder}/archive.zip" />
+ </target>
+ <target name="unzip-artifacts" if="artifactfolder">
+ <mkdir dir="${artifactfolder}/artifacts" />
+ <unzip src="${artifactfolder}/archive.zip"
dest="${artifactfolder}/artifacts"/>
+ </target>
+ <target name="build-source" >
+ <mkdir dir="${artifactfolder}/sources" />
+ <unzip
src="${artifactfolder}/artifacts/archive/target/checkout/release-dir/org/apache/royale/compiler/royale-compiler-parent/${release.version}/royale-compiler-parent-${release.version}-source-release.zip"
dest="${artifactfolder}/sources" >
+ <cutdirsmapper dirs="1" />
+ </unzip>
+
+ <!-- build these modules -->
+ <exec executable="${mvn}" dir="${artifactfolder}/sources"
failonerror="true" >
+ <arg value="clean" />
+ <arg value="install" />
+ <!--<arg value="-P" />
+ <arg value="-main,utils" />-->
+ </exec>
+ </target>
+ <target name="validate-bits">
+ </target>
+ <target name="sign">
+ </target>
+ <target name="deploy-signed-artifacts">
+ </target>
+
+ <target name="main" depends="install-rat,credentials" description="Perform
required release approval steps">
+ <antcall target="check-new-version" />
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="pull" />
+ <arg value="--rebase" />
+ </exec>
+ <antcall target="checkout_tag" />
+ <ant antfile="build.xml" target="release" />
+ <ant antfile="build.xml" target="create-md5" />
+ <ant antfile="build.xml" target="sign" />
+ <mkdir
dir="${dist.dev}/royale/compiler/${release.version}/rc${rc}/binaries" />
+ <copy
todir="${dist.dev}/royale/compiler/${release.version}/rc${rc}" >
+ <fileset dir="${basedir}/out" >
+ <include
name="apache-royale-compiler-${release.version}-src*" />
+ </fileset>
+ </copy>
+ <copy
todir="${dist.dev}/royale/compiler/${release.version}/rc${rc}/binaries" >
+ <fileset dir="${basedir}/out" >
+ <include
name="apache-royale-compiler-${release.version}-bin*" />
+ </fileset>
+ </copy>
+ <copy file="${basedir}/README"
tofile="${dist.dev}/royale/compiler/${release.version}/rc${rc}/READme" />
+ <copy file="${basedir}/ApproveCompiler.xml"
tofile="${dist.dev}/royale/compiler/${release.version}/rc${rc}/ApproveCompiler.xml"
/>
+ <copy
file="${basedir}/apache-royale-compiler-installer-config.xml"
tofile="${dist.dev}/royale/compiler/${release.version}/rc${rc}/binaries/apache-royale-compiler-installer-config.xml"
/>
+ <exec executable="${svn}" dir="${dist.dev}/royale/compiler"
failonerror="true" >
+ <arg value="update" />
+ </exec>
+ <exec executable="${svn}" dir="${dist.dev}/royale/compiler"
failonerror="true" >
+ <arg value="add" />
+ <arg
value="${dist.dev}/royale/compiler/${release.version}/rc${rc}" />
+ </exec>
+ <exec executable="${svn}" dir="${dist.dev}/royale/compiler"
failonerror="true" >
+ <arg value="commit" />
+ <arg value="--username" />
+ <arg value="${apache.username}" />
+ <arg value="--password" />
+ <arg value="${apache.password}" />
+ <arg value="-m" />
+ <arg value="rc${rc} of Apache Royale Compiler
${release.version}" />
+ </exec>
+ <antcall target="tag_release" />
+ <antcall target="update-installer-config" />
+ <antcall target="mail" />
+ </target>
+
+ <target name="tag_release" unless="tag" >
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="tag" />
+ <arg value="-a" />
+ <arg value="apache-royale-compiler-${release.version}-rc${rc}" />
+ <arg value="-m" />
+ <arg value=""rc${rc} of
apache-royale-compiler-${release.version}"" />
+ </exec>
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="push" />
+ <arg value="--tags" />
+ </exec>
+ </target>
+
+ <target name="credentials" depends="get-username,get-password">
+ <echo>${apache.username}</echo>
+ <echo>${apache.password}</echo>
+ </target>
+ <target name="get-username" unless="apache.username" >
+ <input
+ message="Enter Apache account username:"
+ addproperty="apache.username"/>
+ <condition property="have.username">
+ <not>
+ <equals trim="true" arg1=""
arg2="${apache.username}"/>
+ </not>
+ </condition>
+ <fail message="The apache.username property is not set. It
should be the username for Apache SVN and Git."
+ unless="have.username"/>
+ </target>
+ <target name="get-password" unless="apache.password" >
+ <input
+ message="Enter Apache account password:"
+ addproperty="apache.password"/>
+ <condition property="have.password">
+ <not>
+ <equals trim="true" arg1=""
arg2="${apache.password}"/>
+ </not>
+ </condition>
+ <fail message="The apache.password property is not set. It
should be the password for Apache SVN and Git."
+ unless="have.password"/>
+ </target>
+
+ <target name="update-installer-config" >
+ <exec executable="${svn}" dir="${site}" failonerror="true" >
+ <arg value="update" />
+ <arg
value="trunk/content/installer/sdk-installer-config-4.0.xml" />
+ </exec>
+ <replaceregexp byline="true">
+ <regexp pattern="developmentVersion="${release.version}"
rc="rc.*" latestVersion"/>
+ <substitution
expression="developmentVersion="${release.version}"
rc="rc${rc}" latestVersion"/>
+ <fileset dir="${site}/trunk/content/installer">
+ <include name="sdk-installer-config-4.0.xml"/>
+ </fileset>
+ </replaceregexp>
+ <exec executable="${svn}" dir="${site}" failonerror="true" >
+ <arg value="commit" />
+ <arg value="--username" />
+ <arg value="${apache.username}" />
+ <arg value="--password" />
+ <arg value="${apache.password}" />
+ <arg value="-m" />
+ <arg value=""update sdk-installer-config-4.0 for
Compiler ${release.version} rc${rc}"" />
+ </exec>
+ <!-- pause to give buildbot chance to react -->
+ <sleep seconds="5" />
+ <get src="https://cms.apache.org/royale/publish"
username="${apache.username}" password="${apache.password}"
dest="${basedir}/getresult.txt" />
+ <delete file="${basedir}/getresult.txt" />
+ </target>
+
+ <target name="update-installer-config-release" depends="credentials">
+ <exec executable="${svn}" dir="${site}" failonerror="true" >
+ <arg value="update" />
+ <arg
value="trunk/content/installer/sdk-installer-config-4.0.xml" />
+ </exec>
+ <xmlproperty
file="${site}/trunk/content/installer/sdk-installer-config-4.0.xml"
semanticAttributes="true" collapseAttributes="true"/>
+ <property name="latest.release"
value="${config.products.ApacheRoyaleCompiler.latestVersion}" />
+ <replaceregexp byline="true" flags="g">
+ <regexp
pattern="ApacheRoyaleCompiler(.*)latestVersion="${latest.release}"(.*)"/>
+ <substitution
expression="ApacheRoyaleCompiler\1latestVersion="${release.version}"\2"/>
+ <fileset dir="${site}/trunk/content/installer">
+ <include name="sdk-installer-config-4.0.xml"/>
+ </fileset>
+ </replaceregexp>
+ <exec executable="${svn}" dir="${site}" failonerror="true" >
+ <arg value="commit" />
+ <arg value="--username" />
+ <arg value="${apache.username}" />
+ <arg value="--password" />
+ <arg value="${apache.password}" />
+ <arg value="-m" />
+ <arg value=""update sdk-installer-config-4.0 and
other files for royale sdk ${release.version} rc${rc}"" />
+ </exec>
+ <!-- pause to give buildbot chance to react -->
+ <sleep seconds="5" />
+ <get src="https://cms.apache.org/royale/publish"
username="${apache.username}" password="${apache.password}"
dest="${basedir}/getresult.txt" />
+ <delete file="${basedir}/getresult.txt" />
+ </target>
+
+ <target name="check-new-version" description="check if svn folder needs
to be added" >
+ <condition property="version.folder"
value="${dist.dev}/royale/compiler/${release.version}" >
+ <not>
+ <available
file="${dist.dev}/royale/compiler/${release.version}" />
+ </not>
+ </condition>
+ <antcall target="add-version-folder" />
+ </target>
+
+ <target name="add-version-folder" description="adds svn folder if
needed" if="version.folder" >
+ <mkdir dir="${version.folder}" />
+ <exec executable="${svn}" dir="${dist.dev}/royale/compiler"
failonerror="true" >
+ <arg value="add" />
+ <arg value="${version.folder}" />
+ </exec>
+ </target>
+
+ <target name="mail" >
+ <!-- try to set line breaks before the vertical line | -->
+ <echo
file="${basedir}/discussthread.properties">discuss.thread.body=This is the
discussion thread.\n\
+\n\
+Changes in this RC include:\n\
+\n\
+\n\
+Thanks,\n\
+${my.name}
+</echo>
+ <replace file="${basedir}/discussthread.properties">
+ <replacefilter token=" " value="%20" />
+ <replacefilter token="\n" value="${CRLF}" />
+ </replace>
+ <property file="${basedir}/discussthread.properties" />
+
+ <!-- try to set line breaks before the vertical line | -->
+ <echo file="${basedir}/votethread.properties">vote.thread.body=Hi,\n\
+\n\
+This is vote for the ${release.version} release of the Royale\n\
+compilers. The only purpose of the Compiler packages are to serve as\n\
+upstream packages for the Royale release.\n\
+\n\
+The release candidate can be found here;\n\
+https://dist.apache.org/repos/dist/dev/royale/compiler/${release.version}/rc${rc}/\n\
+\n\
+Before voting please review the section, 'What are the ASF requirements on\n\
+approving a release?', at:\n\
+http://www.apache.org/dev/release.html#approving-a-release\n\
+\n\
+At a minimum you would be expected to check that:\n\
+- MD5 and signed packages are correct\n\
+- README, RELEASE_NOTES, NOTICE and LICENSE files are all fine\n\
+- That the build script completes successfully\n\
+- That you can compile using the results of building the source package\n\
+\n\
+The source package is set up the same way as the repo. This means that\n\
+the results of the build are not the same as the binary package. The\n\
+compiled source package can be used to build Royale apps via the command\n\
+line and Ant, but not in Flash Builder or other IDEs. You can test the
source\n\
+package by building it, then pointing to it from the source package of the\n\
+Royale release candidate and building the examples in the Royale package.\n\
+\n\
+The binary package is set up as an upstream package for the Royale\n\
+release. The most convenient way to use the binary package is to install\n\
+a Royale SDK via Ant or the Installer.\n\
+\n\
+Please vote to approve this release:\n\
++1 Approve the release\n\
+-1 Disapprove the release (please provide specific comments to why)\n\
+\n\
+This vote will be open for 72 hours or until a result can be called.\n\
+\n\
+The vote passes if there is:\n\
+- At least 3 +1 votes from the PMC\n\
+- More positive votes than negative votes\n\
+\n\
+Remember that this is a 'beta-quality' release so there\n\
+will be many bugs found. The goal is not to try to find and fix bugs\n\
+in the RC, but to make sure we have the packaging right, and enough\n\
+functionality that folks will have some success trying to use it.\n\
+\n\
+People who are not in PMC are also encouraged to test out the release and\n\
+vote, although their votes will not be binding, they can influence how the\n\
+PMC votes.\n\
+\n\
+When voting please indicate what OS, IDE, Flash Player version and AIR\n\
+version you tested with.\n\
+\n\
+Please put all discussion about this release in the DISCUSSION thread not\n\
+this VOTE thread.\n\
+\n\
+For your convenience there is an ant script that automates the common\n\
+steps to validate a release. Instead of individually downloading the\n\
+package and signature files, unzipping, etc, you can instead:\n\
+1) create an empty folder,\n\
+2) download into that folder this file:\n\
+https://dist.apache.org/repos/dist/dev/royale/compiler/${release.version}/rc${rc}/ApproveCompiler.xml\n\
+3) run the script:\n\
+ ant -e -f ApproveCompiler.xml -Drelease.version=${release.version}
-Drc=${rc}\n\
+\n\
+You are not required to use this script, and more testing of the packages\n\
+and build results are always encouraged.\n\
+\n\
+Thanks,\n\
+${my.name}
+</echo>
+ <replace file="${basedir}/votethread.properties">
+ <replacefilter token=" " value="%20" />
+ <replacefilter token="\n" value="${CRLF}" />
+ </replace>
+ <property file="${basedir}/votethread.properties" />
+ <echo file="${basedir}/votethread.html"><html><body><a
href="mailto:[email protected]?subject=[DISCUSS]%20Discuss%20Release%20Apache%20Royale%20Compiler%20${release.version}%20RC${rc}&body=${discuss.thread.body}">Click
here to review discuss thread</a><br/><a
href="mailto:[email protected]?subject=[VOTE]%20Release%20Apache%20Royale%20Compiler%20${release.version}%20RC${rc}&body=${vote.thread.body}">Click
here [...]
+ <makeurl file="${basedir}/votethread.html" property="vote.thread.url"
/>
+ <exec executable="${browser}">
+ <arg value="${vote.thread.url}" />
+ </exec>
+ <delete file="${basedir}/votethread.properties" />
+ <delete file="${basedir}/votethread.html" />
+ <delete file="${basedir}/discussthread.properties" />
+ </target>
+
+ <target name="release" depends="credentials" >
+ <available file="${svn.dist.release}"
+ type="dir"
+ property="dist.release" value="${svn.dist.release}" />
+
+ <fail message="The svn.dist.release property is not set to the
working copy for https://dist.apache.org/repos/dist/release."
+ unless="dist.release"/>
+
+ <exec executable="${svn}" dir="${dist.release}/royale"
failonerror="true" >
+ <arg value="update" />
+ </exec>
+ <exec executable="${svn}" dir="${dist.release}/royale/compiler"
failonerror="true" >
+ <arg value="mv" />
+ <arg
value="${dist.dev}/royale/compiler/${release.version}/rc${rc}" />
+ <arg value="${dist.release}/royale/compiler/${release.version}" />
+ </exec>
+ <exec executable="${svn}" dir="${dist.release}/.."
failonerror="true" >
+ <arg value="commit" />
+ <arg value="--username" />
+ <arg value="${apache.username}" />
+ <arg value="--password" />
+ <arg value="${apache.password}" />
+ <arg value="-m" />
+ <arg value="Apache Royale Compiler ${release.version}"
/>
+ </exec>
+ <antcall target="release.tag" />
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="push" />
+ <arg value="--tags" />
+ </exec>
+ <echo>Wait at least 24 hours before running
update-installer-config-release target</echo>
+ </target>
+
+ <target name="release.tag" >
+ <condition property="tag"
value="apache-royale-compiler-${release.version}-rc${rc}">
+ <not>
+ <isset property="tag" />
+ </not>
+ </condition>
+ <exec executable="${git}" dir="${basedir}" failonerror="true"
output="${basedir}/taghash.txt">
+ <arg value="show" />
+ <arg value="${tag}" />
+ </exec>
+ <replaceregexp file="${basedir}/taghash.txt" match="(.*).commit
(.*).Author(.*)" replace="\2" byline="false" flags="s" />
+ <loadfile srcFile="${basedir}/taghash.txt" property="releasehash" />
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="tag" />
+ <arg value="-a" />
+ <arg value="apache-royale-compiler-${release.version}" />
+ <arg value="${releasehash}" />
+ <arg value="-m" />
+ <arg value=""Official release of
apache-royale-compiler-${release.version}"" />
+ </exec>
+ </target>
+</project>