Skip to content

Release processs automation investigation

tingtli edited this page Jul 11, 2018 · 6 revisions

Introduction

This documentation describes to automate some of the release process steps to reduce the manual work when xCAT is released.

Thoughts to automate

When we release candidate build, generally we do preparation work, then run the test, if the test passes, we update some documentation to finish the release process. The automation process will have 2 parts. One is before the test, the other one is after the test. So, the new release process have following steps.

1. Prepare RC.

Name: pre_release
Usage: ./pre_release 
Flow:  
1. Prompt to ask user to input the release version <release_number>
2. Prompt to ask user to confirm Y/N?
3. If no, exit, if yes, go ahead to modify the release file (/xcat-core/docs/source/conf.py)
4. Commit the change? Y/N
5. If no, exit, if yes, go ahead to commit the change.
6. end

2. Release

Name:go_release
Usage: ./go_release
Flow:
1. Prompt to ask user to input the release number 
2. Prompt to ask user to confirm Y/N?
3. If no, exit, if yes, go ahead 
4. Prompt to modify xcat.org download.html (Y/N/E)
    Y:  modify xcat.org, go ahead
    N:  not modify xcat.org, go ahead
    E: exit
5. Prompt to modify xcat.org index.html (Y/N/E)
    Y:  modify xcat.org, go ahead
    N:  not modify xcat.org, go ahead
    E: exit
6. Display the change and prompt to confirm the commit Y/N/E?
    Y: commit
    N: not commit, go ahead
    E: exit
7. Prompt to upload build to xcat.org (debug mode /upload mode/Exit)
    Debug mode: gives out debug information
    Upload mode: upload the build to xcat.org
    Exit:exit 
8. Go back to step 7?  Y/N ? 
   Y: got back to 7
   N:  go ahead
   E: exit
9. Prompt to link xcat-dep tar ball (Y/N/E)
   Y: find the link and gives out the message. Is this correct (Y/N)
       Y:confirm and go ahead.
       N:go back to 9.
   N: go ahead 
   E: exit
10. bump version in xcat-core  (Y/N/E)
   Y: update xcat version (git)
   N: go ahead
   E: exit
11. Edit README.rst (Y/N/E)
   Y: update README.rst (git)
   N: go ahead
   E: exit
    
12. tag branch (Y/N/E)
   Y: tag (git)
   N: go ahead
   E: exit
 
13. Sync xcat.org from master branch to stable branch
     Y: sync (git)
     N: go ahead
     E: exit

14. Update xCAT Offical Portal server to obtain the latest pages. 
     Y: get stable branch (git)
     N: go ahead
     E: exit

15. Run process on https://github.com/xcat2/xcat-core/releases/new
     Y: run process on release page (restapi)
     N: go ahead
     E: exit

16. Edit the sidebar News in the Wiki on xCAT github, to add a new entry for current release.
     Y: edit page (restapi)
     N: go ahead
     E: exit

17. end

Steps for the release process

1. Review issue list (Manually)

2. Prepare release note (Manually)

3. Update xCAT2 Release Information (Automatically)

[root@nn release]# cat prebuild
#Before do candidate build, update xCAT release information.

#git checkout <new_branch>
#sed -i s/$new_release/$old_release/g docs/source/conf.py
#git add docs/source/conf.py

(rewrite once and git checkin once)
#add new lines to docs/source/overview/xcat2_release.rst
#git add docs/source/overview/xcat2_release.rst

#git commit docs/source/conf.py  -m "update for xCAT 2.x.x release "

4. merge master branch to xCAT 2.X branch (Manually)

5. Build xCAT RPM and DEB Package (Manually)

6. Overall Test against Relase build (Manually)

7. Update xcat.org and all documentation (Automatically)

[root@nn release]# cat afterbuild
#Section 1
#To update index and download page in xcat.org

# git checkout <new_branch>
# sed -i s/$current_release/$new_release/g download.html
# sed -i s/$old_release/$current_release/g download.html

# add one line for the next release in about line 43 in index.html
# git add download.html index.html
# git commit download.html index.html -m "update for xCAT 2.x release "

#Section 2
#To promote xCAT GA code to xcat.org

#ssh xcat.org -l xcat
#cd /var/www/xcat.org

//Note: 2.x is current release version
#promote_build.py --type=snap $current_build --link_latest --force

# cd /var/www/xcat.org/files/xcat/xcat-dep/2.x_Linux/

#find the latest xcat-dep package which has been verified
# ln -s xcat-dep-201707281008.tar.bz2 xcat-dep-$current_release-linux.tar.bz2

#cd /var/www/xcat.org/files/xcat/xcat-dep/2.x_Ubuntu/
#ln -s  xcat-dep-ubuntu-201707281008.tar.bz2 xcat-dep-2.13.8-ubuntu.tar.bz2

## Bump version
#git checkout <new branch>
#edit version
#Edit README.rst  (link to https://github.com/xcat2/xcat-core/blob/master/README.rst, modify README.rst : 
1. latest
2. stable
3. refer to branch https://readthedocs.org/projects/xcat-docs/versions/ 
)
#git add Version README.rst -m "update for xCAT XXX release"
#git commit


##tag 
#git checkout 2.14
   #git pull upstream 2.14
   #git push origin 2.14 
   #git tag -a 2.14.<x> -m 'xCAT 2.14.<x> release' -f
   #git push --tags origin 2.14 -f
   #git push --tags upstream 2.14 -f
   #git ls-remote --tags ./.       # list tags in current repo
   #git ls-remote --tags           # list tags in remote repo
 

8. Sync xcat.org from master branch to stable branch of xcat.org repository

9. Update xCAT Offical Portal server to obtain the latest pages.

[root@server]#ssh 10.3.5.10 -l root
[root@ 10.3.5.10]#ssh xcat.org -l xcat
xcat@sense: cd /var/www/xcat.org
xcat@sense: git checkout stable 
xcat@sense: git pull
open page https://github.com/xcat2/xcat-core/releases/new

Edit the page. Taking 2.13.8 for example:
    Enter 2.13.8 to Tag version input box
    Choose 2.13 in @ target dorp-down box
    Enter 2.13.8 to release title input box
    Enter some description in Describe this release input box. please refer to 2.13.8 release page

11. Edit the sidebar News in the Wiki on xCAT github, to add a new entry for current release.

This is the release process which can be referenced.

https://github.ibm.com/xcat2/team_process/blob/master/FVT/docs/Release_process.md

News

History

  • Oct 22, 2010: xCAT 2.5 released.
  • Apr 30, 2010: xCAT 2.4 is released.
  • Oct 31, 2009: xCAT 2.3 released. xCAT's 10 year anniversary!
  • Apr 16, 2009: xCAT 2.2 released.
  • Oct 31, 2008: xCAT 2.1 released.
  • Sep 12, 2008: Support for xCAT 2 can now be purchased!
  • June 9, 2008: xCAT breaths life into (at the time) the fastest supercomputer on the planet
  • May 30, 2008: xCAT 2.0 for Linux officially released!
  • Oct 31, 2007: IBM open sources xCAT 2.0 to allow collaboration among all of the xCAT users.
  • Oct 31, 1999: xCAT 1.0 is born!
    xCAT started out as a project in IBM developed by Egan Ford. It was quickly adopted by customers and IBM manufacturing sites to rapidly deploy clusters.
Clone this wiki locally