Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This

...

page

...

is

...

to

...

document

...

the

...

release

...

procedure

...

for

...

Pig.

...

Pig

...

is

...

a

...

fairly

...

young

...

Apache

...

project.

...

Its

...

release

...

process

...

is

...

work

...

in

...

progress

...

and

...

is

...

modeled

...

from

...

Hadoop

...

Release

...

Procedure

...

.

Note that only Pig committers can create a release.

Preparation

TODO:
#. Define issue management process like assigning/removing issues from release.

Creating Release Branch

We only branch for major (X.0.0)

...

and

...

minor(X.Y.0)

...

releases

...

but

...

not

...

for

...

patches

...

(X.Y.Z).

...

Patch

...

is

...

and

...

update

...

to

...

an

...

existing

...

branch

...

created

...

for

...

X.Y.0.

...

  1. Send

...

  1. email

...

  1. to

...

  1. dev@pig.apache.org

...

  1. to notify

...

  1. that

...

  1. you

...

  1. about

...

  1. to

...

  1. branch

...

  1. the

...

  1. tree

...

  1. and

...

  1. ask

...

  1. to

...

  1. hold

...

  1. off

...

  1. any

...

  1. commits

...

  1. till

...

  1. this

...

  1. is

...

  1. finished.

...

  1. Update CHANGES.txt

...

  1. to

...

  1. include

...

  1. the

...

  1. release

...

  1. version

...

  1. and

...

  1. date

...

  1. (use

...

  1. Unreleased

...

  1. for

...

  1. the

...

  1. date

...

  1. if

...

  1. it

...

  1. is

...

  1. unknown)

...

  1. and

...

  1. remove

...

  1. Trunk

...

  1. (unreleased

...

  1. changes)

...

  1. .

...

  1. Below

...

  1. is

...

  1. the

...

  1. example

...

  1. of

...

  1. the

...

  1. top

...

  1. of

...

  1. the

...

  1. CHANGES.txt

...

  1. file

...

  1. after

...

  1. the

...

  1. update:

...

  1. Code Block

...

  1. 
    Pig Change Log
    
    Release 0.1.1 - Unreleased
    
    INCOMPATIBLE CHANGES
    
    NEW FEATURES
    
    IMPROVEMENTS
    PIG-253: integration with hadoop-18
    
    BUG FIXES
    PIG-342: Fix DistinctDataBag to recalculate size after it has spilled. (bdimcheff via gates)
    

...

  1. Edit src/docs/src/documentation/content/xdocs/site.xml

...

  1. .

...

  1. In

...

  1. the

...

  1. external

...

  1. reference

...

  1. for

...

  1. api

...

  1. where

...

  1. the

...

  1. link

...

  1. contains

...

  1. the

...

  1. previous

...

  1. version

...

  1. number

...

  1. change

...

  1. this

...

  1. string

...

  1. to

...

  1. the

...

  1. correct

...

  1. version

...

  1. number.

...

  1. Commit

...

  1. these

...

  1. changes

...

  1. to

...

  1. trunk:

...

  1. Code Block

...

  1. 
    svn commit -m "Preparing for release X.Y.Z"
    

...

  1. Create a branch for the release series:
    Code Block
    
    svn copy https://svn.apache.org/repos/asf/pig/trunk \
    https://svn.apache.org/repos/asf/pig/branches/branch-X.Y -m "Branching for X.Y releases"
    

...

  1. Update CHANGES.txt

...

  1. to

...

  1. add

...

  1. back

...

  1. in

...

  1. Trunk

...

  1. (unreleased

...

  1. changes).

...

  1. Top

...

  1. of

...

  1. the

...

  1. CHANGES.txt

...

  1. should

...

  1. look

...

  1. like

...

  1. this

...

  1. now:

...

  1. Code Block

...

  1. 
    Pig Change Log
    
    Trunk (unreleased changes)
    
      INCOMPATIBLE CHANGES
    
      IMPROVEMENTS
    
      OPTIMIZATIONS
    
      BUG FIXES
    
    Release 0.1.1 - Unreleased
    ....
    

...

  1. Update the default version in build.xml on trunk to X.Y+1.0-dev.

...

  1. Commit

...

  1. these

...

  1. changes

...

  1. to

...

  1. trunk:

...

  1. Code Block

...

  1. 
    svn commit -m "Preparing for X.Y+1.0 development"
    

...

Updating Release Branch

The steps in this section are needed for all the releases (major, minor, and patches).

  1. Check out the branch with:
    Code Block
    
    svn co https://svn.apache.org/repos/asf/pig/branches/branch-X.Y
    

...

  1. Run rat report and make sure that all files that can have apache license agreement. Note that currently the rat report is part of output and needs to be manually extracted. TODO: write the report into a file.
    Code Block
    
    ant -Djava5.home=<java5 jdk dir>  -Dforrest.home=<forrest installation dir> releaseaudit >out
    

...

  1. For patches,

...

  1. update

...

  1. CHANGES.txt

...

  1. to

...

  1. include

...

  1. the

...

  1. release

...

  1. version

...

  1. and

...

  1. date.

...

  1. See

...

  1. #2

...

  1. from

...

  1. Create

...

  1. Release

...

  1. Branch

...

  1. section.

...

  1. Update

...

  1. RELEASE_NOTES.txt

...

  1. for

...

  1. this

...

  1. release:

...

    1. Make

...

    1. sure

...

    1. to

...

    1. change

...

    1. all

...

    1. of

...

    1. the

...

    1. version

...

    1. number

...

    1. references

...

    1. to

...

    1. the

...

    1. current

...

    1. version

...

    1. number.

...

    1. Note

...

    1. highlights

...

    1. for

...

    1. this

...

    1. release.

...

    1. CHANGES.txt

...

    1. is

...

    1. a

...

    1. great

...

    1. place

...

    1. to

...

    1. find

...

    1. these.

...

    1. Note

...

    1. incompatibilities

...

    1. for

...

    1. this

...

    1. release.

...

    1. These

...

    1. should

...

    1. be

...

    1. listed

...

    1. under

...

    1. INCOMPATIBLE

...

    1. CHANGES

...

    1. in

...

    1. CHANGES.txt.

...

  1. Update

...

  1. the

...

  1. version

...

  1. number

...

  1. in

...

  1. build.xml

...

  1. to

...

  1. be

...

  1. X.Y.N-dev,

...

  1. where

...

  1. N

...

  1. is

...

  1. one

...

  1. greater

...

  1. than

...

  1. the

...

  1. release

...

  1. being

...

  1. made.

...

  1. Commit

...

  1. these

...

  1. changes:

...

  1. Code Block

...

  1. 
    svn commit -m "Preparing for release X.Y.Z"
    

...

  1. Tag the release candidate:
    Code Block
    
    svn copy https://svn.apache.org/repos/asf/pig/branches/branch-X.Y \
    https://svn.apache.org/repos/asf/pig/tags/release-X.Y.Z-rcR -m "Pig X.Y.Z-rcR release."
    

...

Building

  1. Build the release and run unit tests:
    Code Block
    
    ant clean
    ant test
    ant clean
    ant jar
    cd contrib/zebra
    ant
    cd ../..
    cd contrib/piggybank/java
    ant
    cd ../../..
    ant -Dversion=X.Y.Z -Dforrest.home=<Forrest installation dir>  tar
    

...

  1. Test the tar file by unpacking the release and
    1. building pig.jar:

...

    1. ant
    2. building and running tutorial
      Code Block
      
      cd tutorial
      ant
      

...

    1. build piggybank
      Code Block
      
      cd contrib/piggybank/java
      ant
      

...

    1. running unit tests ant test
  1. Generate the MD5 checksum of the release file:
    Code Block
    
    cd build
    md5sum pig-X.Y.Z.tar.gz > pig-X.Y.Z.tar.gz.md5
    

...

  1. If you do not have a gpg key pair, do the following steps:
    1. Generating key pair using the following command. You can simply accept all default settings and give your name, email and Passphase.
      Code Block
      
      gpg --gen-key
      

...

    1. Export your public key.
      Code Block
      
      gpg --armor --output pubkey.txt --export 'Your Name'
      

...

    1. Open pubkey.txt,

...

    1. copy

...

    1. the

...

    1. full

...

    1. text

...

    1. and

...

    1. append

...

    1. it

...

    1. to

...

    1. the

...

    1. following

...

    1. files

...

    1. by

...

    1. pasting,

...

    1. then

...

    1. commit

...

    1. these

...

    1. changes:

...

    1. Code Block

...

    1. 
      https://svn.apache.org/repos/asf/pig/branches/branch-X.Y.Z/KEYS
      https://svn.apache.org/repos/asf/pig/trunk/KEYS
      

...

    1. Upload updated KEYS to Apache.
      Code Block
      
      scp KEYS people.apache.org:/www/www.apache.org/dist/pig/KEYS
      

...

    1. Export your private key,

...

    1. keep

...

    1. it

...

    1. with

...

    1. you.

...

    1. Code Block

...

    1. 
      gpg --export-secret-key

...

    1.  -a "Your Name" > private.key
      
  1. Sign the release (see Step-By-Step

...

  1. Guide to Mirroring Releases for more information).

...

  1. Code Block

...

  1. 
    gpg --armor --output pig-X.Y.Z.tar.gz.asc --detach-sig pig-X.Y.Z.tar.gz
    

...

  1. Verify gpg signature.
    Code Block
    
    gpg --import KEYS  (if necessarily)
    gpg --verify pig-X.Y.Z.tar.gz.asc pig-X.Y.Z.tar.gz
    

...

  1. Copy release files to a public place (usually into public_html

...

  1. in

...

  1. your

...

  1. home

...

  1. directory):

...

  1. Code Block
    
    ssh people.apache.org mkdir public_html/pig-X.Y.Z-candidate-0
    scp -p pig-X.Y.Z.tar.gz* people.apache.org:public_html/pig-X.Y.Z-candidate-0
    cd ..
    scp RELEASE_NOTES.txt people.apache.org:public_html/pig-X.Y.Z-candidate-0
    

...

  1. Push proposed release to Maven staging area
    1. Create file ~/.m2/settings.xml

...

    1. with

...

    1. following

...

    1. contents

...

    1. (NOTE:

...

    1. It

...

    1. is

...

    1. highly

...

    1. recommended

...

    1. to

...

    1. use

...

    1. Maven's password encryption capabilities for your passwords.):

...

    1. Code Block

...

    1. 
      <settings>
        <servers>
          <server>
            <id>apache.releases.https</id>
            <username>your apache id</username>
            <password>your apache password</password>
          </server>
          <server>
            <id>apache.snapshots.https</id>
            <username>your apache id</username>
            <password>your apache password</password>
          </server>
          <server>
            <id>apache.staging.https</id>
            <username>your apache id</username>
            <password>your apache password</password>
          </server>
        </servers>
      
        <profiles>
          <profile>
            <id>apache-release</id>
            <properties>
              <gpg.passphrase>your GPG password</gpg.passphrase>
            </properties>
          </profile>
        </profiles>
      </settings>
      

...

    1. Run ant command ant mvn-deploy

...

    1. to

...

    1. publish

...

    1. Pig

...

    1. artifacts

...

    1. to

...

    1. the

...

    1. apache

...

    1. snapshot

...

    1. repository.

...

    1. Run

...

    1. ant

...

    1. command

...

    1. ant

...

    1. –Drepo=staging

...

    1. –Dversion=X.Y.Z

...

    1. mvn-deploy

...

    1. to

...

    1. publish

...

    1. Pig

...

    1. artifacts

...

    1. to

...

    1. the

...

    1. apache

...

    1. staging

...

    1. repository.

...

  1. Call

...

  1. a

...

  1. release

...

  1. vote.

...

  1. The

...

  1. initial

...

  1. email

...

  1. should

...

  1. be

...

  1. sent

...

  1. to

...

  1. dev@pig.apache.org

...

  1. .

...

  1. Make

...

  1. sure

...

  1. to

...

  1. attache

...

  1. rat

...

  1. report

...

  1. to

...

  1. it.

...

  1. Here

...

  1. is

...

  1. a

...

  1. sample

...

  1. of

...

  1. email:

...

  1. Code Block

...

  1. 
    From: Olga Natkovich [mailto:olgan@yahoo-inc.com] 
    Sent: Tuesday, November 25, 2008 3:59 PM
    To: dev@pig.apache.org
    Subject: [VOTE] Release Pig 0.1.1 (candidate 0)
    
    Hi,
    
    I have created a candidate build for Pig 0.1.1. This release is almost identical to Pig 0.1.0 with a couple of exceptions:
    
    (1) It is integrated with hadoop 18
    (2) It has one small bug fix (PIG-253)
    (3) Several UDF were added to piggybank - pig's UDF repository
    
    The rat report is attached.
    
    Keys used to sign the release are available at http://svn.apache.org/viewvc/pig/trunk/KEYS?view=markup.
    
    Please download, test, and try it out:
    
    http://people.apache.org/~olga/pig-0.1.1-candidate-0
    
    Should we release this? Vote closes on Wednesday, December 3rd.
    
    Olga
    

...

Forward

...

the

...

initial

...

email

...

to

...

private@pig.apache.org

...

for

...

Pig

...

PMC

...

members

...

to

...

vote.

...

Publish

Once three PMC members have voted for a release, it may be published.

  1. Tag the release:
    Code Block
    
    svn move https://svn.apache.org/repos/asf/pig/tags/release-X.Y.Z-rcR \
    https://svn.apache.org/repos/asf/pig/tags/release-X.Y.Z -m "Pig X.Y.Z release."
    

...

  1. Copy release files to the distribution directory and make them writable by the pig group.
    Code Block
    
    ssh people.apache.org
    cp -pr public_html/pig-X.Y.Z-candidate-0 /www/www.apache.org/dist/pig/pig-X.Y.Z
    cd /www/www.apache.org/dist/pig
    chgrp -R pig pig-X.Y.Z
    chmod -R g+w pig-X.Y.Z
    

...

  1. The release directory usually contains just two releases, the most recent from two branches, with a link named 'stable' to the most recent recommended version.
    Code Block
    
    ssh people.apache.org
    cd /www/www.apache.org/dist/pig
    rm -rf pig-A.B.C; rm stable
    ln -s pig-A.B.D stable
    

...

  1. Push Maven release from staging to production
    1. Go to https://repository.apache.org/index.html#view-repositories;staging~browsestorage

...

    1. Log

...

    1. in,

...

    1. using

...

    1. your

...

    1. Apache

...

    1. LDAP

...

    1. credentials.

...

    1. The

...

    1. sign

...

    1. in

...

    1. link

...

    1. is

...

    1. in

...

    1. the

...

    1. upper

...

    1. right

...

    1. hand

...

    1. corner.

...

    1. In

...

    1. the

...

    1. frame

...

    1. on

...

    1. the

...

    1. left

...

    1. side

...

    1. of

...

    1. the

...

    1. page,

...

    1. select

...

    1. "Staging

...

    1. Repositories",

...

    1. you

...

    1. should

...

    1. now

...

    1. see

...

    1. a

...

    1. list

...

    1. of

...

    1. artifacts

...

    1. in

...

    1. the

...

    1. main

...

    1. frame.

...

    1. Select

...

    1. the

...

    1. appropriate

...

    1. artifacts

...

    1. for

...

    1. this

...

    1. release

...

    1. and

...

    1. click

...

    1. "Close"

...

    1. on

...

    1. the

...

    1. bar

...

    1. above

...

    1. the

...

    1. list

...

    1. of

...

    1. artifacts.

...

    1. Select

...

    1. the

...

    1. appropriate

...

    1. artifacts

...

    1. for

...

    1. this

...

    1. release

...

    1. and

...

    1. click

...

    1. "Release"

...

    1. on

...

    1. the

...

    1. bar

...

    1. above

...

    1. the

...

    1. list

...

    1. of

...

    1. artifacts.

...

  1. Wait

...

  1. 24

...

  1. hours

...

  1. for

...

  1. release

...

  1. to

...

  1. propagate

...

  1. to

...

  1. mirrors.

...

  1. Prepare

...

  1. to

...

  1. edit

...

  1. the

...

  1. website.

...

  1. Code Block

...

  1. 
    svn co https://svn.apache.org/repos/asf/pig/site
    

...

  1. Update the front page news in author/src/documentation/content/xdocs/index.xml.

...

  1. Update

...

  1. the

...

  1. release

...

  1. news

...

  1. in

...

  1. author/src/documentation/content/xdocs/releases.xml.

...

  1. Update

...

  1. the

...

  1. documentation

...

  1. links

...

  1. in

...

  1. author/src/documentation/content/xdocs/site.xml

...

  1. Copy

...

  1. in

...

  1. the

...

  1. release

...

  1. specific

...

  1. documentation

...

  1. Code Block

...

  1. 
        cd publish
        mkdir docs/rX.Y.Z
        cp -pr <releasedir>/docs/* publish/docs/rX.Y.Z/
        svn add publish/docs/rX.Y.Z
    

...

  1. Regenerate the site,

...

  1. review

...

  1. it

...

  1. and

...

  1. commit

...

  1. in

...

  1. HowToCommit.

...

  1. Deploy

...

  1. your

...

  1. site

...

  1. changes.

...

  1. Code Block

...

  1. 
    ssh people.apache.org
    cd /www/pig.apache.org
    svn

...

  1.  up
    
  2. Wait until you see your changes reflected on the Apache web site.
  3. Send announcements to the user and developer lists as well as (announce@haoop.apache.org

...

  1. )

...

  1. once

...

  1. the

...

  1. site

...

  1. changes

...

  1. are

...

  1. visible.

...

  1. Code Block

...

  1. 
    Pig  team is happy to announce Pig X.Y.Z release. 
    
    Apache Pig provides a high-level data-flow language and execution framework for parallel computation on Hadoop clusters.
    More details about Pig can be found at http://pig.apache.org/.
    
    The highlights of this release are ... The details of the release can be found at http://pig.apache.org/releases.html.
    

...

  1. In JIRA,

...

  1. mark

...

  1. the

...

  1. release

...

  1. as

...

  1. released.

...

    1. Goto JIRA and click on Administration tab.
    2. Select the Pig project.
    3. Select Manage versions.
    4. Select Release for the version you have released.
    5. If a description has not yet been added for the version you are releasing, select Edit Details and give a brief description of the release.
    6. If the next version does not exist (that is, if you are releasing version 0.x, if version 0.x+1 does not yet exist) create it using the Add Version box at the top of the page.
  1. In JIRA, mark the issues resolved in this release as closed.
    1. Goto JIRA and click on the "Search for Issues" on "Issues" menu.
    2. In the left hand Edit section, set Project to Pig.
    3. In Status select "Resolved"
    4. In Resolutions select "Fixed"
    5. Click "Search" button
    6. In the next screen, further select fix For select the version you are releasing.
    7. Click on the "Search" button
    8. Select "Tools->Bulk change all XX issues" (near the top right)
    9. Select all the issues and click on "Next"
    10. Select "Transition Issues" radio button and click on "Next"
    11. Select "Close Issue" radio button and click on "Next"
    12. Uncheck the box near the bottom at says "Send mail for this update" lest you spam every Pig developer with a message for every bug resolved in this release. Click "Next".
    13. Click "Confirm". Don't worry if it gives you a HTTP 500 error, it still does the transitions.
  2. Update jdiff for next release (step 16 to 19).
    Code Block
    
       svn co https://svn.apache.org/repos/asf/pig/trunk
    

...

  1. Open build.xml.

...

  1. Change

...

  1. this

...

  1. line:

...

  1. Code Block

...

  1. 
    <property name="jdiff.stable" value="X.Y-1.Z"/>
    To
    <property name="jdiff.stable" value="X.Y.Z"/>
    

...

  1. Copy jdiff comparison base to trunk
    Code Block
    
    cp {releasedir}/lib/jdiff/pig_X.Y.Z.xml lib/jdiff
    

...

  1. Code Block

...

  1. 
    svn add lib/jdiff/pig_X.Y.Z.xml
    svn remove lib/jdiff/pig_X.Y-1.Z.xml
    svn commit -m "Jdiff change for X.Y.Z"
    

...

  1. TODO

...

  1. Need

...

  1. to

...

  1. integrate

...

  1. javadoc

...

  1. into

...

  1. this.

...