incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Sling Website: Release Management (page edited)
Date Tue, 30 Jun 2009 11:16:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence" />
    <style type="text/css">
    <!--
    body, p, td, table, tr, .bodytext, .stepfield {
	font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	color: #000000;
	font-weight: normal;
}
#PageContent {
	text-align: left;
	background-color: #fff;
	padding: 0px;
	margin: 0px;
    padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/

body {
	margin: 0px;
	padding: 0px;
	text-align: center;
    background-color: #f0f0f0;
}

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

.wiki-content p, .commentblock p {
    margin: 16px 0px 16px 0px;
    padding: 0px;
}

.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid #3c78b5;
    border-right: 1px solid #3c78b5;
}

ul, ol {
    margin-top: 2px;
    margin-bottom: 2px;
    padding-top: 0px;
    padding-bottom: 0px;
}

pre {
    padding: 0px;
    margin-top: 5px;
    margin-left: 15px;
    margin-bottom: 5px;
    margin-right: 5px;
    text-align: left;
}

.helpheading {
    font-weight: bold;
    background-color: #D0D9BD;
        border-bottom: 1px solid #3c78b5;
        padding: 4px 4px 4px 4px;
        margin: 0px;
        margin-top: 10px;
}
.helpcontent {
        padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.code {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.focusedComment {
    background: #ffffce;
}

.commentBox, .focusedComment {
    padding: 10px;
    margin: 5px 0 5px 0;
    border: 1px #bbb solid;
}

.codeHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.codeContent {
    text-align: left;
    background-color: #f0f0f0;
    padding: 3px;
}

.preformatted {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.preformattedHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.preformattedContent {
    background-color: #f0f0f0;
    padding: 3px;
}

.panel {
 	border: 1px dashed #3c78b5;
    margin: 10px;
    margin-top: 0px;
}

.panelHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.panelContent {
    background-color: #f0f0f0;
    padding: 5px;
}

.anonymousAlert {
    background-color: #f0f0f0;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}

.lockAlert {
    background-color: #f0f0f0;
    width: 50%;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}


.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}


.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

.breadcrumbs {
    background-color: #f0f0f0;
 	border-color: #3c78b5;
	border-width: 1px 0px 1px 0px;
	border-style: solid;
    font-size: 11px;
    padding: 3px 0px 3px 0px;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 2px 4px;
}

.menuitems {
	padding: 4px 4px 20px 4px;
}

.rightpanel {
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

#helpheading {
    text-align: left;
    font-weight: bold;
    background-color: #D0D9BD;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 4px 4px;
	margin: 0px;
}
#helpcontent {
	padding: 4px 4px 4px 4px;
    background-color: #f5f7f1;
}
.helptab-unselected {
    font-weight: bold;
	padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #D0D9BD;
	padding: 5px;
}
.helptabs {
    margin: 0px;
    background-color: #f5f7f1;
	padding: 5px;
}
.infopanel-heading {
    font-weight: bold;
	padding: 4px 0px 2px 0px;
}

.pagebody {
}

.pageheader {
	padding: 5px 5px 5px 0px;
 	border-bottom: 1px solid #3c78b5;
}

.pagetitle {
	font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
	font-size: 18px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
	margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	font-weight: normal;
    color: #666666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
	font-size: 12px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.sectionbottom {
    border-bottom: 1px solid #3c78b5;
}

.topRow {
    border-top: 2px solid #3c78b5;
}

.tabletitle {
	font-size: 14px;
	font-weight: bold;
	font-family: Arial, sans-serif;
    padding: 3px 0px 2px 0px;
    margin: 8px 4px 2px 0px;
	color: #003366;
	border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
    color: #666666;
    font-size: 10px;
    padding: 0px 0px 5px 0px;
}

HR {
	color: 3c78b5;
	height: 1;
}

A:link, A:visited, A:active, A:hover {
	color: #003366;
}

h1 A:link, h1 A:visited, h1 A:active {
	text-decoration: none;
}

h1 A:hover {
    border-bottom: 1px dotted #003366;
}

.wiki-content > :first-child, .commentblock > :first-child {
    margin-top: 3px;
}

.logocell {
    padding: 10px;
}

input {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #000000;
}

textarea, textarea.editor {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #333333;
}

/* use logoSpaceLink instead.
.spacenametitle {
	font: 21px/31px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle img {
  margin: 0 0 -4px 0;
}
.spacenametitle a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle a:visited {
    text-decoration: none;
    color: #999999;
}*/

.spacenametitle-printable {
	font: 20px/25px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle-printable a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle-printable a:visited {
    text-decoration: none;
    color: #999999;
}

.blogDate {
	font-weight: bold;
	text-decoration: none;
	color: black;
}

.blogSurtitle {
    background: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.blogHeading {
    font-size: 20px;
    line-height: normal;
    font-weight: bold;
    padding: 0px;
    margin: 0px;
}

.blogHeading a {
   text-decoration: none;
   color: black;
}

.endsection {
	align: right;
	color: #666666;
	margin-top: 10px;
}
.endsectionleftnav {
	align: right;
	color: #666666;
	margin-top: 10px;
}

h1 {
	font-size: 24px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	color: #003366;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 36px 0px 4px 0px;
}

h2 {
	font-size: 18px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 27px 0px 4px 0px;
}

h3 {
	font-size: 14px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 21px 0px 4px 0px;
}

h4 {
	font-size: 12px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 18px 0px 4px 0px;
}

h4.search {
	font-size: 12px;
	line-height: normal;
	font-weight: normal;
	background-color: #f0f0f0;
	padding: 4px;
	margin: 18px 0px 4px 0px;
}

h5 {
	font-size: 10px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

h6 {
	font-size: 8px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    font-size: 10px;
    color: #666666;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666666;
    font-size: 10px;
}
.smalltext a {
    color: #666666;
}
.smalltext-blue {
    color: #3c78b5;
    font-size: 10px;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }

div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
    margin: 0px 0px 0px 0px;
}

div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }

.tableview table {
    margin: 0;
}

.tableview th {
    text-align: left;
    color: #003366;
    font-size: 12px;
    padding: 5px 0px 0px 5px;
    border-bottom: 2px solid #3c78b5;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0px 0px 1px 0px;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0px 5px 0px;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
	background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}
.label {
	font-weight: bold;
	color: #003366;
}

label {
	font-weight: bold;
	color: #003366;
}

.error {
	background-color: #fcc;
}

.errorBox {
	background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

.successBox {
	background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
	padding-left: 10px;
	padding-right: 10px;
	margin-left: 5px;
	margin-right: 0px;
	border-left: 1px solid #3c78b5;
}

table.confluenceTable
{
    margin: 5px;
    border-collapse: collapse;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

DIV.small {
	font-size: 9px;
}

H1.pagename {
	margin-top: 0px;
}

IMG.inline  {}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
                font-size: 11px;
                    color: red; }

/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink {
    color: maroon;
}
a.createlink {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: darkblue;
}

.diffadded {
    background: #ddffdd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkgreen;
}
.diffdeleted {
    color: #999;
    background: #ffdddd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkred;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
	border-left: 4px solid lightgrey;
}
.differror {
    background: brown;
}
.diff {
    font-family: lucida console, courier new, fixed-width;
	font-size: 12px;
	line-height: 14px;
}
.diffaddedchars {
    background-color:#99ff99;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#ff9999;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #cccccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
 	border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
	margin: 1px 1px 10px 1px;
}

.navBackgroundBox {
    padding: 5px 5px 5px 5px;
    font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: white;
    background: #3c78b5;
    text-decoration: none;
}

.previewBoxTop {
	background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
 	border-color: #3c78b5;
	border-width: 0px 1px 0px 1px;
	border-style: solid;
	padding: 10px;
	margin: 0px;
}
.previewBoxBottom {
	background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
 	border: 1px solid #3c78b5;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.search-highlight {
    background-color: #ffffcc;
}

/* normal (white) background */
.rowNormal {
    background-color: #ffffff;
 }

/* alternate (pale yellow) background */
.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomNoColor {
}

.rowAlternateNoBottomColor td {
    border-bottom: 0px;
}

.rowAlternateNoBottomNoColor td {
    border-bottom: 0px;
}

/* row highlight (grey) background */
.rowHighlight {
    background-color: #f0f0f0;

}

TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }

TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }

.toolbar  {
    margin: 0px;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px 2px 2px 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0px;
    border-style: none;
    text-align: center;
	padding: 0px;
}

.commentblock {
    margin: 12px 0 12px 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license-eval, .license-none, .license-nonprofit {
    border-top: 1px solid #bbbbbb;
    text-align: center;
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

.license-eval, .license-none {
    background-color: #ffcccc;
}

.license-eval b, .license-none b {
    color: #990000
}

.license-nonprofit {
    background-color: #ffffff;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("$req.contextPath/images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}

#foldertab li {
list-style: none;
margin: 0;
display: inline;
}

#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}

#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }

#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}

#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}

/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}

#squaretab li {
display: inline;
list-style-type: none;
}

#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}

#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}

#squaretab li a#current {
background: white;
color: black;
}

.blogcalendar * {
    font-family:verdana, arial, sans-serif;
    font-size:x-small;
    font-weight:normal;
    line-height:140%;
    padding:2px;
}


table.blogcalendar {
    border: 1px solid #3c78b5;
}

.blogcalendar th.calendarhead, a.calendarhead {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    text-transform:uppercase;
    background-color: #3c78b5;
    color: #ffffff;
    letter-spacing: .3em;
    text-transform: uppercase;
}

.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}

.blogcalendar th {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    background-color:#f0f0f0;
}

.blogcalendar td {
    font-size:x-small;
    font-weight:normal;
}

.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}

/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }

/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }

/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}

.pagecontent
{
    padding: 10px;
    text-align: left;
}

/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}

.topBar {
    background-color: #003366;
}


/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}

.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}

.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}

.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.greyFormBox {
    border: 1px solid #cccccc;
    padding: 5px;
}

/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
    margin: 0px;
}

.openPageHighlight {
    background-color: #ffffcc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a
{
    color: #666666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #003366;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #003366;
}
.top50 a {
    font-size: 1.4em;
    color: #003366;
}
.top100 a {
    font-size: 1.2em;
    color: #003366;
}

.heatmap {
    list-style:none;
    width: 95%;
    margin: 0px auto;
}

.heatmap a {
    text-decoration:none;
}

.heatmap a:hover {
    text-decoration:underline;
}

.heatmap li {
    display: inline;
}

.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}

a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }

a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }

.linkerror { background-color: #fcc;}

a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}

a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}

ul.square {list-style-type: square}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
}


.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
}

div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toogleFormDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    padding:5px;
    margin-top: 5px;
}

.toogleInfoDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    display:none;
    padding:5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom:20px;
}

#editBox{
   border:1px solid lightgray;
   background-color:#F0F0F0;
}

/******* Left Navigation Theme Styles ********/
.leftnav li a {
    text-decoration:none;
    color:white;
    margin:0px;
    display:block;
    padding:2px;
    padding-left:5px;
    background-color: #3c78b5;
    border-top:1px solid #3c78b5;
}

.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}

/* Added by Shaun during i18n */
.replaced
{
    background-color: #33CC66;
}

.topPadding
{
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    padding: 6px;
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-header {
    background: lightyellow;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}
    -->
    </style>
</head>
<body>

<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/SLINGxSITE">SLINGxSITE</a> :
            <a href="http://cwiki.apache.org/confluence/display/SLINGxSITE/Release+Management">Release Management</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/SLINGxSITE/Release+Management">Release Management</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~fmeschbe">Felix Meschberger</a>
            <span class="smallfont">(Jun 30, 2009)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=117895&originalVersion=10&revisedVersion=11">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><h1><a name="ReleaseManagement-ReleaseManagement"></a>Release Management</h1>


<p>Sling releases (and SNAPSHOTS) are deployed to the  <span class="nobr"><a href="http://repository.apache.org" title="Visit page outside Confluence" rel="nofollow">Nexus repository<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> instead of the traditional deployment via the Maven 2 mirros source on <tt>people.apache.org</tt>. This makes the release process much leaner and simpler. In addtion we can benefit from the Apache Parent POM 6, which has most of the release profile setup built-in.</p>

<p>Most of the hard work of preparing and deploying the release is done by Maven.</p>

<div>
<ul>
  <li><a href='#ReleaseManagement-Prerequisites'>Prerequisites</a></li>
  <li><a href='#ReleaseManagement-StagingtheReleaseCandidates'>Staging the Release Candidates</a></li>
  <li><a href='#ReleaseManagement-StartingtheVote'>Starting the Vote</a></li>
  <li><a href='#ReleaseManagement-WaitfortheResults'>Wait for the Results</a></li>
  <li><a href='#ReleaseManagement-CancelingtheRelease'>Canceling the Release</a></li>
  <li><a href='#ReleaseManagement-PromotingtheRelease'>Promoting the Release</a></li>
  <li><a href='#ReleaseManagement-UpdateJIRA'>Update JIRA</a></li>
  <li><a href='#ReleaseManagement-CreateanAnnouncement'>Create an Announcement</a></li>
  <li><a href='#ReleaseManagement-RelatedLinks'>Related Links</a></li>
  <li><a href='#ReleaseManagement-AppendixA%3ACreateandAddyourkeyto'>Appendix A: Create and Add your key to <span class="nobr"><a href="http://www.apache.org/dist/sling/KEYS" title="Visit page outside Confluence" rel="nofollow">http://www.apache.org/dist/sling/KEYS<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></a></li>
  <li><a href='#ReleaseManagement-AppendixB%3ApreparingreleasesonMacOSX'>Appendix B: preparing releases on Mac OS X</a></li>
  <li><a href='#ReleaseManagement-AppendixC%3ADeploybundlesontheSlingOBR'>Appendix C: Deploy bundles on the Sling OBR</a></li>
</ul></div>



<h2><a name="ReleaseManagement-Prerequisites"></a>Prerequisites</h2>

<ul>
	<li>To prepare or perform a release you <b>MUST BE</b> at least be an Apache Sling Committer.</li>
	<li>Each and every release must be signed; therefore the public key should be cross signed by other Apache committers (not required but suggested) and this public key should be added to <span class="nobr"><a href="http://www.apache.org/dist/sling/KEYS" title="Visit page outside Confluence" rel="nofollow">http://www.apache.org/dist/sling/KEYS<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (See Appendix A)</li>
	<li>When preparing the release on Mac OS X, check out Appendix B before trying the steps in the next chapter.</li>
	<li>Make sure you have all Apache servers defined in your <span class="nobr"><a href="http://maven.apache.org/developers/committer-settings.html" title="Visit page outside Confluence" rel="nofollow">settings.xml<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
</ul>


<p>In the past we staged release candidates on our local machines using a semi-manual process. Now that we inherit from the Apache parent POM version 6, a repository manager will automatically handle staging for you. This means you now only need to specify your GPG passphrase in the release profile of your <tt>${user.home}/.m2/settings.xml</tt>:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;settings&gt;</span>
    ...
    <span class="code-tag">&lt;profiles&gt;</span>
        <span class="code-tag">&lt;profile&gt;</span>
            <span class="code-tag">&lt;id&gt;</span>apache-release<span class="code-tag">&lt;/id&gt;</span>
            <span class="code-tag">&lt;properties&gt;</span>
                <span class="code-tag">&lt;gpg.passphrase&gt;</span> <span class="code-tag"><span class="code-comment">&lt;!-- YOUR KEY PASSPHRASE --&gt;</span></span> <span class="code-tag">&lt;/gpg.passphrase&gt;</span>
            <span class="code-tag">&lt;/properties&gt;</span>
        <span class="code-tag">&lt;/profile&gt;</span>
    <span class="code-tag">&lt;/profiles&gt;</span>
    ...
<span class="code-tag">&lt;/settings&gt;</span></pre>
</div></div>

<p>Everything else has been configured in the latest Sling Parent POM:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;parent&gt;</span>
    <span class="code-tag">&lt;groupId&gt;</span>org.apache.sling<span class="code-tag">&lt;/groupId&gt;</span>
    <span class="code-tag">&lt;artifactId&gt;</span>sling<span class="code-tag">&lt;/artifactId&gt;</span>
    <span class="code-tag">&lt;version&gt;</span>6<span class="code-tag">&lt;/version&gt;</span>
<span class="code-tag">&lt;/parent&gt;</span></pre>
</div></div>



<h2><a name="ReleaseManagement-StagingtheReleaseCandidates"></a>Staging the Release Candidates</h2>

<p>First prepare your POMs for release:</p>

<ol>
	<li>Make sure there are no snapshots in the POMs to be released</li>
	<li>Check that your POMs will not lose content when they are rewritten during the release process
<div class="preformatted"><div class="preformattedContent">
<pre>$ mvn release:prepare -DdryRun=true
</pre>
</div></div>
<p>Compare the original <tt>pom.xml</tt> with the one called <tt>pom.xml.tag</tt> to see if the license or any other info has been removed. This has been known to happen if the starting <tt>&lt;project&gt;</tt> tag is not on a single line. The only things that should be different between these files are the <tt>&lt;version&gt;</tt> and <tt>&lt;scm&gt;</tt> elements. If there are any other changes, you must fix the original <tt>pom.xml</tt> file and commit before proceeding with the release.</p></li>
	<li>Publish a snapshot
<div class="preformatted"><div class="preformattedContent">
<pre>$ mvn deploy
...
[INFO] [deploy:deploy]
[INFO] Retrieving previous build number from apache.snapshots.https
...
</pre>
</div></div>
	<ul>
		<li>If you experience an error during deployment like a HTTP 401 check your settings for the required server entries as outlined in the <b>Prerequisites</b></li>
		<li>Be sure that the generated artifacts respect the Apache release <span class="nobr"><a href="http://www.apache.org/dev/release.html" title="Visit page outside Confluence" rel="nofollow">rules<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>: NOTICE and LICENSE files should be present in the META-INF directory within the jar. For -sources artifacts, be sure that your POM does not use the maven-source-plugin:2.0.3 which is broken. The recommended version at this time is 2.0.4</li>
		<li>You should verify the deployment under the <span class="nobr"><a href="https://repository.apache.org/content/groups/snapshots/org/apache/sling" title="Visit page outside Confluence" rel="nofollow">snapshot<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> repository on Apache</li>
	</ul>
	</li>
	<li>Prepare the release
<div class="preformatted"><div class="preformattedContent">
<pre>$ mvn release:clean
$ mvn release:prepare
</pre>
</div></div>
	<ul>
		<li>Preparing the release will create the new tag in SVN, automatically checking in on your behalf</li>
	</ul>
	</li>
	<li>Stage the release for a vote
<div class="preformatted"><div class="preformattedContent">
<pre>$ mvn release:perform
</pre>
</div></div>
	<ul>
		<li>The release will automatically be inserted into a temporary staging repository for you, see the Nexus <span class="nobr"><a href="http://www.sonatype.com/books/nexus-book/reference/staging.html" title="Visit page outside Confluence" rel="nofollow">staging documentation<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> for full details</li>
		<li>You can continue to use <tt>mvn release:prepare</tt> and <tt>mvn release:perform</tt> on other sub-projects as necessary on the same machine and they will be combined in the same staging repository - this is useful when making a release of multiple Sling modules.</li>
	</ul>
	</li>
	<li>Close the staging repository
	<ul>
		<li>Login to <span class="nobr"><a href="https://repository.apache.org" title="Visit page outside Confluence" rel="nofollow">https://repository.apache.org<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> using your Apache SVN credentials. Click on <b>Staging</b> on the left. Then click on <b>org.apache.sling</b> in the list of repositories. In the panel below you should see an open repository that is linked to your username and IP. Right click on this repository and select <b>Close</b>. This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything</li>
	</ul>
	</li>
	<li>Verify the staged artifacts
	<ul>
		<li>If you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of &#42;.asc (signature) files. If you don't like the content of the repository, right click your repository and choose <b>Drop</b>. You can then rollback your release (see <b>Canceling the Release</b>) and repeat the process</li>
		<li>Note the staging repository URL (especially the number at the end of the URL) you will need this in your vote email</li>
	</ul>
	</li>
</ol>




<h2><a name="ReleaseManagement-StartingtheVote"></a>Starting the Vote</h2>

<p>Propose a vote on the dev list with the closed issues, the issues left, and the staging repository - for example:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>To: "Sling Developers List" &lt;dev@sling.apache.org&gt;
Subject: [VOTE] Release Apache Sling ABC version X.Y.Z

Hi,

We solved N issues in this release:
https://issues.apache.org/jira/browse/SLING/fixforversion/...

There are still some outstanding issues:
https://issues.apache.org/jira/browse/SLING/component/...

Staging repository:
https://repository.apache.org/content/repositories/sling-staging-[YOUR REPOSITORY ID]/

You can use this UNIX script to download the release and verify the signatures:
http://svn.apache.org/repos/asf/sling/trunk/check_staged_release.sh

Usage:
sh check_staged_release.sh [YOUR REPOSITORY ID] /tmp/sling-staging

Please vote to approve this release:

  [ ] +1 Approve the release
  [ ]  0 Don't care
  [ ] -1 Don't release, because ...

This vote will be open for 72 hours.
</pre>
</div></div>



<h2><a name="ReleaseManagement-WaitfortheResults"></a>Wait for the Results</h2>

<p>From <span class="nobr"><a href="http://www.apache.org/foundation/voting.html" title="Visit page outside Confluence" rel="nofollow">Votes on Package Releases<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>:</p>

<blockquote><p>Votes on whether a package is ready to be released follow a format similar to majority approval &#8211; except that the decision is officially determined solely by whether at least three +1 votes were registered. Releases may not be vetoed. Generally the community will table the vote to release if anyone identifies serious problems, but in most cases the ultimate decision, once three or more positive votes have been garnered, lies with the individual serving as release manager. The specifics of the process may vary from project to project, but the 'minimum of three +1 votes' rule is universal.</p></blockquote>


<p>The list of binding voters is available on the <a href="/confluence/display/SLINGxSITE/Project+Team" title="Project Team">Project Team</a> page.</p>


<p>If the vote is successful, post the result to the dev list - for example:</p>


<div class="preformatted"><div class="preformattedContent">
<pre>To: "Sling Developers List" &lt;dev@sling.apache.org&gt;
Subject: [RESULT] [VOTE] Release Apache Sling ABC version X.Y.Z

Hi,

The vote has passed with the following result :

+1 (binding): &lt;&lt;list of names&gt;&gt;
+1 (non binding): &lt;&lt;list of names&gt;&gt;

I will copy this release to the Felix dist directory and
promote the artifacts to the central Maven repository.
</pre>
</div></div>

<p>Be sure to include all votes in the list and indicate which votes were binding. Consider -1 votes very carefully. While there is technically no veto on release votes, there may be reasons for people to vote -1. So sometimes it may be better to cancel a release when someone, especially a member of the PMC, votes -1.</p>

<p>If the vote is unsuccessful, you need to fix the issues and restart the process - see <b>Canceling the Release</b>.</p>

<p>If the vote is successful, you need to promote and distribute the release - see <b>Promoting the Release</b>.</p>



<h2><a name="ReleaseManagement-CancelingtheRelease"></a>Canceling the Release</h2>

<p>If the vote fails, or you decide to redo the release:</p>

<ol>
	<li>Remove the release tag from Subversion (<tt>svn del ...</tt>)</li>
	<li>Login to <span class="nobr"><a href="https://repository.apache.org" title="Visit page outside Confluence" rel="nofollow">https://repository.apache.org<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> using your Apache SVN credentials. Click on <b>Staging</b> on the left. Then click on <b>org.apache.sling</b> in the list of repositories. In the panel below you should see a closed repository that is linked to your username and IP (if it's not yet closed you need to right click and select <b>Close</b>). Right click on this repository and select <b>Drop</b>.</li>
	<li>Rollback the version in the <tt>pom.xml</tt> and commit any fixes you need to make</li>
</ol>




<h2><a name="ReleaseManagement-PromotingtheRelease"></a>Promoting the Release</h2>

<p>If the vote passes:</p>

<ol>
	<li>Copy the released artifacts to the Sling dist directory (<tt>/x1/www/www.apache.org/dist/sling</tt>) on <tt>people.apache.org</tt></li>
	<li>Delete the old release from the Sling dist directory (it's archived)</li>
	<li>Login to <span class="nobr"><a href="https://repository.apache.org" title="Visit page outside Confluence" rel="nofollow">https://repository.apache.org<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> with your Apache SVN credentials. Click on <b>Staging</b>. Find your closed staging repository, right click on it and choose <b>Promote</b>. Select the <b>Releases</b> repository from the drop-down list and click <b>Promote</b>.</li>
	<li>Next click on <b>Repositories</b>, select the <b>Releases</b> repository and validate that your artifacts are all there</li>
	<li>If you're releasing bundles, you should also add them to the Sling Release OBR (see <b>Appendix C</b>).</li>
	<li>Update the news section on the website at <a href="/confluence/display/SLINGxSITE/News" title="News">news</a></li>
	<li>Update the download page on the website at <a href="/confluence/display/SLINGxSITE/Downloads" title="Downloads">downloads</a> to point to the new release.</li>
</ol>


<p>For the last two tasks, it's better to give the mirrors some time to distribute the uploaded artifacts (one day should be fine). This ensures that once the website (news and download page) is updated, people can actually download the artifacts.</p>



<h2><a name="ReleaseManagement-UpdateJIRA"></a>Update JIRA</h2>

<p>Go to <span class="nobr"><a href="https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=12310710" title="Visit page outside Confluence" rel="nofollow">Manage Versions<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> section on the SLING JIRA and mark the X.Y.Z version as released setting the release date to the date the vote has been closed.</p>

<p>Also create a new version X.Y.Z+2, if that hasn't already been done.</p>



<h2><a name="ReleaseManagement-CreateanAnnouncement"></a>Create an Announcement</h2>

<div class="preformatted"><div class="preformattedContent">
<pre>To: "Sling Developers List" &lt;dev@sling.apache.org&gt;, "Apache Announcements" &lt;announce@apache.org&gt;
Subject: [ANN] Apache Sling ABC version X.Y.Z Released

The Apache Sling team is pleased to announce the release of Apache Sling ABC version X.Y.Z

&lt;&lt;insert short description of the sub-project&gt;&gt;

http://sling.apache.org/site/apache-felix-ABC.html

This release is available from http://sling.apache.org/site/downloads.cgi and Maven:

&lt;dependency&gt;
    &lt;groupId&gt;org.apache.sling&lt;/groupId&gt;
    &lt;artifactId&gt;org.apache.sling.ABC&lt;/artifactId&gt;
    &lt;version&gt;X.Y.Z&lt;/version&gt;
&lt;/dependency&gt;


Release Notes:

&lt;&lt;insert release notes in text format from JIRA&gt;&gt;

Enjoy!

-The Sling team
</pre>
</div></div>


<p><b>Important</b>: Add the release to the Software section of the next board report below <a href="/confluence/display/SLING/Reports" title="Reports">SLING:Reports</a>.</p>



<h2><a name="ReleaseManagement-RelatedLinks"></a>Related Links</h2>
<ol>
	<li><span class="nobr"><a href="http://www.apache.org/dev/release-signing.html" title="Visit page outside Confluence" rel="nofollow">http://www.apache.org/dev/release-signing.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
	<li><span class="nobr"><a href="http://wiki.apache.org/incubator/SigningReleases" title="Visit page outside Confluence" rel="nofollow">http://wiki.apache.org/incubator/SigningReleases<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
</ol>




<h2><a name="ReleaseManagement-AppendixA%3ACreateandAddyourkeyto"></a>Appendix A: Create and Add your key to <span class="nobr"><a href="http://www.apache.org/dist/sling/KEYS" title="Visit page outside Confluence" rel="nofollow">http://www.apache.org/dist/sling/KEYS<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></h2>

<p>Considering that you are using a *nix system with a working OpenSSH, GnuPG, and bash you can create and add your own key with the following command:</p>

<ol>
	<li><em>Create a public/private pair key</em>:
<div class="preformatted"><div class="preformattedContent">
<pre>$ gpg --gen-key
</pre>
</div></div>
<p>When gpg asks for e-mail linked the key you  <b>MUST USE</b> the &lt;committer&gt;@apache.org one<br/>
When gpg asks for comment linked the key you <em>SHOULD USE</em> "CODE SIGNING KEY"</p></li>
	<li><em>Add the key to</em> <span class="nobr"><a href="http://www.apache.org/dist/sling/KEYS:" title="Visit page outside Confluence" rel="nofollow">http://www.apache.org/dist/sling/KEYS:<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> type the following command replacing the word e-mail with your Apache's one (&lt;committer&gt;@apache.org).
<div class="preformatted"><div class="preformattedContent">
<pre>$ (gpg --list-sigs e-mail &amp;&amp; gpg --export --armor e-mail) &gt; toadd.key
$ scp toadd.key people.apache.org:
$ ssh people.apache.org "cat toadd.key &gt;&gt; /x1/www/www.apache.org/dist/sling/KEYS"
</pre>
</div></div></li>
	<li>You are <b>DONE</b>, but to see the changes on <span class="nobr"><a href="http://www.apache.org/dist/sling/KEYS" title="Visit page outside Confluence" rel="nofollow">http://www.apache.org/dist/sling/KEYS<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> you must wait 2 hours</li>
</ol>




<h2><a name="ReleaseManagement-AppendixB%3ApreparingreleasesonMacOSX"></a>Appendix B: preparing releases on Mac OS X</h2>

<p>When running the <tt>mvn release:prepare</tt> command on Mac OS X, you might see the following error:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">[INFO] Executing: svn --non-interactive commit --file /tmp/maven-scm-802409492.commit --targets /tmp/maven-scm-18804-targets
[INFO] Working directory: /homedir/dev/felix/dependencymanager
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Unable to commit files
Provider message:
The svn command failed.
Command output:
svn: Commit failed (details follow):
svn: MKACTIVITY of '/repos/asf/!svn/act/4f11ad5d-9161-0410-b4dd-cb727141ea8c': authorization failed (https:<span class="code-comment">//svn.apache.org)</span></pre>
</div></div>

<p>This is due to a bug in Subversion on the Mac, as described by Brett Porter in his <span class="nobr"><a href="http://blogs.exist.com/bporter/2008/02/25/working-around-non-interactive-problems-in-leopards-subversion/" title="Visit page outside Confluence" rel="nofollow">blog<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. He proposes putting an "svn" script at the head of your path to fix the issue.</p>



<h2><a name="ReleaseManagement-AppendixC%3ADeploybundlesontheSlingOBR"></a>Appendix C: Deploy bundles on the Sling OBR</h2>

<p>We are mainting an OSGi Bundle Repository providing all release of the Sling Bundles. This repository is maintained as part of the Apache Sling site and is available at <span class="nobr"><a href="http://sling.apache.org/obr/sling.xml" title="Visit page outside Confluence" rel="nofollow">http://sling.apache.org/obr/sling.xml<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. The source for this page is maintained in the SVN repository below the <em>site</em>, that is at <span class="nobr"><a href="http://svn.apache.org/repos/asf/sling/site/" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/sling/site/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. To update the Sling OBR repository you must be an Apache Sling Committer since this requires SVN write access.</p>

<p>To update the OBR you may use the Apache Felix Maven Bundle Plugin which prepares the bundle descriptor to be added to the OBR file. Follow these steps to update the OBR:</p>

<p><b>1. Checkout or update the Site Source</b></p>

<div class="code"><div class="codeContent">
<pre class="code-java">$ svn checkout https:<span class="code-comment">//svn.apache.org/repos/asf/sling/site</span></pre>
</div></div>

<p>Note, that you have to checkout the site using the <tt>https</tt> URL, otherwise you will not be able to commit the changes later.</p>

<p><b>2. Deploy the Descriptor</b></p>

<p>To deploy the project descriptor, checkout the tag of the bundle to deploy and run maven</p>

<div class="code"><div class="codeContent">
<pre class="code-java">$ svn checkout http:<span class="code-comment">//svn.apache.org/repos/asf/sling/tags/the_module_tag
</span>$ mvn clean install \
    org.apache.felix:maven-bundle-plugin:deploy \
    -DprefixUrl=http:<span class="code-comment">//repo1.maven.org/maven2 \
</span>    -DremoteOBR=sling.xml \
    -DaltDeploymentRepository=apache.releases::<span class="code-keyword">default</span>::file:<span class="code-comment">///path_to_site_checkout/obr</span></pre>
</div></div>

<p>This generates the bundle descriptor and adds it to the <tt>sling.xml</tt> file of your site checkout.</p>


<p><b>2a. Variant: Refer to Maven Repository</b></p>

<p>Instead of checking out and building the project locally, you may also use the <tt>deploy-file</tt> goal of the Maven Bundle Plugin:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">$ wget http:<span class="code-comment">//repo1.maven.org/maven2/org/apache/sling/the_module/version/the_module-version.jar
</span>$ wget http:<span class="code-comment">//repo1.maven.org/maven2/org/apache/sling/the_module/version/the_module-version.pom
</span>$ mvn org.apache.felix:maven-bundle-plugin:deploy-file \
    -Dfile=the_module-version.jar -DpomFile=the_module-version.pom \
    -DbundleUrl=http:<span class="code-comment">//repo1.maven.org/maven2/org/apache/sling/the_module/version/the_module-version.jar \
</span>    -Durl=file:<span class="code-comment">///path_to_site_checkout/obr \ 
</span>    -DprefixUrl=http:<span class="code-comment">//repo1.maven.org/maven2 \
</span>    -DremoteOBR=sling.xml
$ rm the_module-version.jar the_module-version.pom</pre>
</div></div>


<p><b>3. Commite the Site Changes</b></p>

<p>In the Site checkout folder commit the changes to the <tt>obr/sling.xml</tt> files (you may also review the changes using the <tt>svn diff</tt> command).</p>

<div class="code"><div class="codeContent">
<pre class="code-java">$ svn commit -m<span class="code-quote">"Add Bundle ABC Version X.Y.Z"</span> obr/sling.xml</pre>
</div></div>


<p><b>4. Update the Site on <tt>people.apache.org</tt></b></p>

<p>After committing the changes, you have to update the site source, which is getting mirrored to the web servers on <tt>people.apache.org</tt></p>

<div class="code"><div class="codeContent">
<pre class="code-java">$ ssh people.apache.org svn update /x1/www/sling.apache.org/obr/sling.xml</pre>
</div></div>

<p>After updating the site source it will generally take an hour or two until the changes are visible on the web.</p></div>


</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
    </tr>
</table>

<div class="smalltext">
    Powered by
    <a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
    (Version: 2.2.9 Build:#527 Sep 07, 2006)
    -
    <a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
    <br>
    <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>

</div>

</body>
</html>


Mime
View raw message