<?xml version="1.0" encoding="UTF-8"?>

<!--
 * 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.
-->

<ui:composition template="/main.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:c="http://java.sun.com/jsp/jstl/core"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:tc="http://myfaces.apache.org/tobago/component"
                xmlns:ui="http://java.sun.com/jsf/facelets">

  <tc:section label="Release Checklist (Developer Info)">

    <tc:section label="Step by Step">

      Checklist of tasks to perform for each release. For general information about Apache releases you may also consult
      <tc:link label="Publishing Maven Artifacts" link="http://www.apache.org/dev/publishing-maven-artifacts.html"
               image="fa-external-link"/>.

      <tc:section label="Preparation">

        <ul>
          <li>You need to add your GPG keys in <tc:link label="Subversion"
                                                        link="https://svn.apache.org/repos/asf/myfaces/keys/KEYS"
                                                        image="fa-external-link"/>
            and the <tc:link label="Apache site" link="https://www.apache.org/dist/myfaces/KEYS"
                             image="fa-external-link"/> before a release.
          </li>

          <li>Ensure that all open bugs and issues in
            <tc:link label="Jira"
                     link="https://issues.apache.org/jira/issues/?jql=project%20%3D%20TOBAGO%20AND%20fixVersion%20%3D%20#{apiController.releases[0].version}"
                     image="fa-external-link"/> have been either fixed
            or moved to an other release version.
          </li>

          <li>Ensure that all examples are working with the release candidate.
          </li>

          <li>Check the scheduled version number against "semantic versioning".
          </li>

          <li>
            <tc:link label="Post a note" omit="true" image="fa-info">
              <tc:operation name="show" for="preparation-email"/>
            </tc:link>
            and ask for problems with the release candidate.
            <tc:popup markup="large" collapsedMode="hidden" id="preparation-email">
              <tc:box label="Preparation email">
                <i>Replace the variable part &lt;sender-name></i>.
                <tc:separator/>
                <c:set var="subject" value="[Tobago] Preparation for the #{apiController.releases[0].version} release"/>
                <c:set var="content"
                       value="Hi, folks,
&#x0a;
&#x0a;we plan to build version #{apiController.releases[0].version} of Tobago soon.
&#x0a;
&#x0a;If you know any blocking problems with the current SNAPSHOT, give me a hint.
&#x0a;
&#x0a;Regards,
&#x0a;&lt;sender-name>"/>
                <pre><code>Subject: ${subject}

${content}
</code></pre>
                <tc:separator/>
                <tc:button
                    label="Create email"
                    defaultCommand="true"
                    link="mailto:MyFaces Development &lt;dev@myfaces.apache.org>"
                    image="fa-external-link">
                  <f:param name="subject" value="${subject}"/>
                  <f:param name="body" value="${content}"/>
                </tc:button>
              </tc:box>
            </tc:popup>
          </li>

          <li>Install (or unpack) a jdk 1.4 on your computer (only for Tobago 1.0.x).
          </li>

          <li>Please switch to a jdk depending of the version to build:
          </li>

          <li>for Tobago 1.0.x:
            <ul>
              <li>use jdk 1.5 or 1.6 for build</li>
              <li>use jdk 1.7 for deployment</li>
            </ul>
          </li>

          <li>for Tobago 1.5.x use jdk 1.7.
          </li>

          <li>for Tobago 2.x and higher use jdk 1.8 or higher.
          </li>

          <li>Perform basic checks on an unmodified checkout for all modules:

            <pre><code class="language-bash"># for Tobago 1.0.x
$ mvn checkstyle:check rat:check -Pall-modules

# for Tobago 1.5.x and higher
$ mvn clean install -Pall-modules &amp;&amp; mvn checkstyle:check apache-rat:check animal-sniffer:check -Pall-modules

# for Tobago 2.0.9 and higher
$ mvn clean install &amp;&amp; mvn checkstyle:check apache-rat:check animal-sniffer:check dependency-check:check

# for Tobago 3.0.0 and higher
$ mvn clean install -Pall-modules &amp;&amp; mvn checkstyle:check apache-rat:check animal-sniffer:check dependency-check:check -Pall-modules

# for Tobago 4.2.0 and higher
$ mvn clean install &amp;&amp; mvn checkstyle:check apache-rat:check animal-sniffer:check dependency-check:check
</code></pre>
          </li>

          <li>Check version info in this file manually:
            <pre><code
                class="language-bash">$ tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/package-info.java</code></pre>
          </li>
        </ul>
      </tc:section>
      <tc:section label="Building the Release (Tobago 1.0.x to 2.0.8)">
        <tc:badge value="Todo:" markup="warning"/> Migrate this docs to use git!
        <ul>
          <li>Prepare the release with:

            <pre><code class="language-bash">$ mvn release:prepare -Pall-modules</code></pre>
          </li>

          <li>Check out a fresh copy of the svn tag:

            <pre><code class="language-bash">cd ..
svn co https://svn.apache.org/repos/asf/myfaces/tobago/tags/tobago-&lt;version>
cd tobago-&lt;version>
</code></pre>
          </li>

          <li>Deploy the fresh copy to the Nexus repository with the apache-release profile (we are not using release:perform here, because of some different options):

            <pre><code class="language-bash"># for Tobago 1.0.x
# "install" with Java 1.6 and Maven 2
$ mvn install -Papache-release,jdk14retro,generate-assembly --no-plugin-updates -Dnon-default-modules -Djava14.home=\${java14.jre}
# "deploy" with Java 1.7 and Maven 3 (hotfix: also comment out the maven-apt-plugin stuff)
$ mvn deploy -Papache-release,generate-assembly --no-plugin-updates -Dnon-default-modules

# for Tobago 1.5.x to 2.0.8
$ mvn deploy -Papache-release,generate-assembly --no-plugin-updates -Dnon-default-modules
</code></pre>
          </li>
        </ul>
      </tc:section>

      <tc:section label="Building the Release (Tobago 2.0.9 and higher)">
        <ul>
          <li>Prepare and perform the release with:

            <pre><code class="language-bash">$ mvn release:prepare
$ mvn release:perform
</code></pre>
          </li>
          <li>Make public available:

            <pre><code class="language-bash">$ git push
</code></pre>
          </li>
        </ul>
      </tc:section>

      <tc:section label="Staging repository">
        <ul>
          <li><i>Close</i> the repository on the <tc:link label="Nexus" link="https://repository.apache.org/"
                                                          image="fa-external-link"/> instance for staging (you will receive a mail with the staging location).
          </li>

          <li>Update the staging and snapshot version on tobago-vm.apache.org
          </li>
        </ul>
      </tc:section>

      <tc:section label="Voting">
        <ul>
          <li>Propose a
            <tc:link label="vote on the dev list" omit="true" image="fa-info">
              <tc:operation name="show" for="vote-email"/>
            </tc:link> with the staging location.
            <tc:popup markup="large" collapsedMode="hidden" id="vote-email">
              <tc:box label="Voting email">
                <i>Replace the variable part &lt;sender-name>, &lt;insert-list>, &lt;use-one-of>, &lt;a>, &lt;b>or, &lt;c>, &lt;id-from-nexus></i>.
                <tc:separator/>
                <c:set var="subject" value="[VOTE] Release Tobago #{apiController.releases[0].version}"/>
                <c:set var="content"
                       value="Hello,
&#x0a;
&#x0a;We would like to release Tobago #{apiController.releases[0].version}.
&#x0a;
&#x0a;Major changes since last release are:
&#x0a;
&#x0a;&lt;insert-list>
&#x0a;
&#x0a;&lt;use-one-of>
&#x0a;&lt;a> This is a MAJOR release and may contain incompatible API changes.
&#x0a;&lt;b> This is a MINOR release with new functionality in a backwards-compatible manner.
&#x0a;&lt;c> This is a PATCH release with backwards-compatible bug fixes.
&#x0a;
&#x0a;For a detail list please consult the release notes at:
&#x0a;
&#x0a;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&amp;version=#{apiController.releases[0].jira}
&#x0a;
&#x0a;The version is available at the staging repository (Nexus) at:
&#x0a;
&#x0a;https://repository.apache.org/content/repositories/orgapachemyfaces-&lt;id-from-nexus>/
&#x0a;
&#x0a;
&#x0a; TODO: insert Link and SHA-1 of the sources
&#x0a;
&#x0a;
&#x0a;Please vote now! (The vote is open for 72h.)
&#x0a;
&#x0a;[ ] +1
&#x0a;[ ] +0
&#x0a;[ ] -1
&#x0a;
&#x0a;Regards,
&#x0a;&lt;sender-name>"/>
                <pre><code>Subject: ${subject}

${content}</code></pre>
                <tc:separator/>
                <tc:button
                    label="Create email"
                    defaultCommand="true"
                    link="mailto:MyFaces Development &lt;dev@myfaces.apache.org>"
                    image="fa-pencil">
                  <f:param name="subject" value="${subject}"/>
                  <f:param name="body" value="${content}"/>
                </tc:button>
              </tc:box>
            </tc:popup>
          </li>

          <li>For a positive result wait at least 72 hours.
          </li>

          <li>Once a vote is successful, post the result to the dev list.
          </li>
        </ul>
      </tc:section>

      <tc:section label="Publishing">
        <ul>
          <li><i>Release</i> the version in <tc:link label="Jira" link="https://issues.apache.org/jira/"
                                                     image="fa-external-link"/> and close all resolved issues for the release.
          </li>

          <li><i>Release</i> the staging repository on the <tc:link label="Nexus" link="https://repository.apache.org/"
                                                                    image="fa-external-link"/> instance.
          </li>

          <li>Copy the download artifacts from the repository to the site (see script
            <tc:link label="release-artifacts.sh" link="./release-artifacts.sh" image="fa-download"/>).
          </li>

          <li>Add the release version and date to the <tc:link label="Apache Committee Report Helper"
                                                               link="https://reporter.apache.org/addrelease.html?myfaces"
                                                               image="fa-external-link"/>.
          </li>

          <li>Update the release and staging version on tobago-vm.apache.org
          </li>

          <li>Building the site

            <ul>
              <li>Updating the release and version information in the APT files of trunk, e. g.:

                <!--todo this has changed!-->
                <pre><code class="language-bash">tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Release.java
src/site/apt/index.apt
src/site/resources/doap_tobago.rdf</code></pre>
              </li>

              <li>
                <pre><code class="language-bash">$ TOBAGO_SITE=/Volumes/tobago-site
$ cd $TOBAGO_SITE
$ git clone https://github.com/apache/myfaces-tobago tobago-master
$ svn co https://svn.apache.org/repos/asf/myfaces/site/publish/tobago tobago-publish
$ cd tobago-master
$ export MAVEN_OPTS="-Xmx1500m \${MAVEN_OPTS}"
$ mvn clean package -Pattach-source
$ mvn site:site
$ mvn site:stage -DstagingDirectory=$TOBAGO_SITE/tobago-publish</code></pre>
              </li>
            </ul>
          </li>

          <li>Call "reformat code" on all *.html file in $TOBAGO_SITE/tobago-publish in the IDE
            (the generated code has the main content in only one single line).
          </li>

          <li>Update the site after the distribution is on the Apache mirrors available.
          </li>

          <li>Unpack and commit the API Docs of the release with the update.sh (or update-1.5.sh) script in
            /Volumes/tobago-site/tobago-publish.
          </li>

          <li>Remove old download artifacts from the site (see script
            <tc:link label="drop-artifacts.sh" link="./drop-artifacts.sh" image="fa-download"/>).
            Older releases are automatic available in the <tc:link label=" archive"
                                                                   link="http://archive.apache.org/dist/myfaces/"
                                                                   image="fa-external-link"/>.
          </li>

          <li>Remove old snapshots in the maven snapshot repository. This is done automatically, it is only needed, when
            there are dead development ends, e. g. last alpha or beta version like 3.0.0-beta-2-SNAPSHOT which
            will no longer developed.
          </li>

          <li>
            <tc:link label="Create and send announcement" omit="true" image="fa-info">
              <tc:operation name="show" for="announcement-email"/>
            </tc:link>.
            <tc:popup markup="large" collapsedMode="hidden" id="announcement-email">
              <tc:box label="Announcement email">
                <i>Replace the variable parts &lt;edit-me></i>.
                <tc:separator/>
                <c:set var="subject" value="[ANNOUNCE] Apache Tobago #{apiController.releases[0].version} released"/>
                <c:set var="content"
                       value="The Apache MyFaces team is pleased to announce the release of Apache
&#x0a;Tobago &lt;version>.
&#x0a;
&#x0a;Apache Tobago is a component library for JavaServer Faces (JSF) that
&#x0a;allows to write web-applications without the need of coding HTML, CSS
&#x0a;and JavaScript
&#x0a;
&#x0a;Main new features
&#x0a;-----------------
&#x0a;
&#x0a;&lt;list of main new features here or remove this section>
&#x0a;
&#x0a;Changes
&#x0a;-------
&#x0a;
&#x0a;Please check the release notes at
&#x0a;http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&amp;version=#{apiController.releases[0].jira}
&#x0a;for a full list of the changes in this version.
&#x0a;
&#x0a;Known limitations and bugs
&#x0a;--------------------------
&#x0a;
&#x0a;&lt;add main limitations and known bugs here or remove this section>
&#x0a;
&#x0a;For more information about Apache Tobago, please visit
&#x0a;http://myfaces.apache.org/tobago/.
&#x0a;
&#x0a;Have fun,
&#x0a;-The MyFaces team"/>
                <pre><code>Subject: ${subject}

${content}</code></pre>
                <tc:separator/>
                <p>
                  For all versions send to MyFaces Discussion list. Only for major versions send to Apache Announces list.
                </p>
                <tc:button
                    label="Create email for any version"
                    defaultCommand="true"
                    link="mailto:MyFaces Discussion &lt;users@myfaces.apache.org>"
                    image="fa-pencil">
                  <f:param name="subject" value="${subject}"/>
                  <f:param name="body" value="${content}"/>
                </tc:button>
                <tc:button
                    label="Create email for major version"
                    defaultCommand="true"
                    link="mailto:MyFaces Announces &lt;announce@apache.org>"
                    image="fa-pencil">
                  <f:param name="subject" value="${subject}"/>
                  <f:param name="body" value="${content}"/>
                </tc:button>
              </tc:box>
            </tc:popup>
          </li>
        </ul>
      </tc:section>
    </tc:section>

  </tc:section>

</ui:composition>
