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.
- 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 an update to an existing branch created for X.Y.0.
- Send email to
email@example.com notify that you about to branch the tree and ask to hold off any commits till this is finished.
CHANGES.txtto include the release version and date (use
Unreleasedfor the date if it is unknown) and remove
Trunk (unreleased changes). Below is the example of the top of the
CHANGES.txtfile after the update:
src/docs/src/documentation/content/xdocs/site.xml. In the external reference for api where the link contains the previous version number change this string to the correct version number.
- Commit these changes to trunk:
- Create a branch for the release series:
- Update CHANGES.txt to add back in Trunk (unreleased changes). Top of the
CHANGES.txtshould look like this now:
- Update the default version in
build.xmlon trunk to X.Y+1.0-dev.
- Commit these changes to trunk:
Updating Release Branch
The steps in this section are needed for all the releases (major, minor, and patches).
- Check out the branch with:
- Run rat report and make sure that all files that can have apache license agreement.
- For patches, update CHANGES.txt to include the release version and date and update site.xml with the new version. See #2 and #3 from Create Release Branch section.
- Update RELEASE_NOTES.txt for this release:
- Make sure to change all of the version number references to the current version number.
- Note highlights for this release. CHANGES.txt is a great place to find these.
- Note incompatibilities for this release. These should be listed under INCOMPATIBLE CHANGES in CHANGES.txt.
- Update the version number in
build.xmlto be X.Y.N-SNAPSHOT, where N is one greater than the release being made.
- Commit these changes:
- Tag the release candidate:
- Build and run unit tests:
- Check that contrib and tutorial directories compile and tests pass:
- Build the source release:
- Test the source tar file by unpacking the release and
- building pig.jar:
- building and running tutorial
- build piggybank
- running unit tests
- building pig.jar:
- Build the convenience artifacts:
- Generate the MD5 checksum of the release artifact and convenience binaries:
- If you do not have a gpg key pair, do the following steps:
- Generating key pair using the following command. You can simply accept all default settings and give your name, email and Passphase.
- Export your public key.
- Open pubkey.txt, copy the full text and append it to the following files by pasting, then commit these changes:
- Upload updated KEYS to Apache.
- Export your private key, keep it with you.
- Sign the release artifact only (see Step-By-Step Guide to Mirroring Releases for more information).
- Verify gpg signature.
- Copy release artifact, convenience binaries, release notes and the rat report to a public place (usually into public_html in your home directory):
- Push proposed release to Maven staging area
- Create file ~/.m2/settings.xml with following contents (NOTE: It is highly recommended to use Maven's password encryption capabilities for your passwords.):
- Run ant command
ant mvn-deployto publish Pig artifacts to the apache snapshot repository.
- Run ant command
ant –Drepo=staging –Dversion=X.Y.Z mvn-deployto publish Pig artifacts to the apache staging repository.
- Call a release vote. The initial email should be sent to
firstname.lastname@example.org. Here is a sample of email:
Forward the initial email to
email@example.com for Pig PMC members to vote.
- Tag the release:
- Copy release files to the distribution directory and make them writable by the pig group.
- The release directory usually contains just three releases, the most recent from three branches, with a link named 'stable' to the most recent recommended version.
- Push Maven release from staging to production
- Go to https://repository.apache.org/index.html#view-repositories;staging~browsestorage
- Log in, using your Apache LDAP credentials. The sign in link is in the upper right hand corner.
- In the frame on the left side of the page, select "Staging Repositories", you should now see a list of artifacts in the main frame.
- Select the appropriate artifacts for this release and click "Close" on the bar above the list of artifacts.
- Select the appropriate artifacts for this release and click "Release" on the bar above the list of artifacts.
- Wait 24 hours for release to propagate to mirrors.
- Prepare to edit the website.
- Update the front page news in author/src/documentation/content/xdocs/index.xml.
- Update the release news in author/src/documentation/content/xdocs/releases.xml.
- Update the documentation links in author/src/documentation/content/xdocs/site.xml
- Copy in the release specific documentation
- Regenerate the site, review it and commit in HowToDocument#UpdatingthePigSiteDocumentation.
- Wait until you see your changes reflected on the Apache web site. This might take a few minutes.
- Send announcements to the user and developer lists as well as (firstname.lastname@example.org; email@example.com; firstname.lastname@example.org; email@example.com) once the site changes are visible. Note that emails sent to
firstname.lastname@example.org be sent from your
apache.orgemail address and you must be subscribed to each of the lists.
- In JIRA, mark the release as released.
- Goto JIRA and click on Administration tab.
- Select the Pig project.
- Select Versions.
- Select Release for the version you have released.
- If a description has not yet been added for the version you are releasing, select Add description and give a brief description of the release.
- 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 box at the top of the page.
- In JIRA, mark the issues resolved in this release as closed.
- Goto JIRA and click on the "Search for Issues" on "Issues" menu.
- In the left hand Edit section, set Project to Pig.
- In Status select "Resolved"
- In Resolutions select "Fixed"
- Click "Search" button
- In the next screen, further select fix For select the version you are releasing.
- Click on the "Search" button
- Select "Tools->Bulk change all XX issues" (near the top right)
- Select all the issues and click on "Next"
- Select "Transition Issues" radio button and click on "Next"
- Select "Close Issue" radio button and click on "Next"
- 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".
- Click "Confirm". Don't worry if it gives you a HTTP 500 error, it still does the transitions.
- Update jdiff for next release (step 16 to 19).
- Open build.xml. Change this line:
- Copy jdiff comparison base to trunk
- TODO Need to integrate javadoc into this.