Skip to content

Release

Shakeel Mohamed edited this page Mar 13, 2017 · 67 revisions

Splunk SDK for Python Release Instructions

These are instructions on the various steps necessary to cut out a new release of the Splunk SDK for Python. Even though the instructions are public, these steps are only meant to be taken by the SDK maintainers.

Prerequisites

  • Read through all of these release instructions.
    • Update the version numbers in this document to the verison you're about to release.
    • Update any steps if necessary.
    • For updates that could apply to other SDKs as well, update the release instructions page for every other SDK.
  • Update changelog.
  • Run test suite on full test matrix - partially documented on the internal Confluence.
  • Install random_numbers.spl, github_forks.spl, and searchcommands_app.tar.gz (found in build/ after running python setup.py dist on the respository) on Linux (32-bit and 64-bit), MacOS X (64-bit), and Windows (32-bit and 64-bit).
    • For each of the random_numbers and github apps, add a new data input for both kinds, and check that they generate events by running the search "*" with time range "Real time (all time)".

    • For searchcommands_app, verify that each of these commands produces sensible results:

      | inputlookup tweets 
      | countmatches fieldname=word_count pattern="\\w+" text
      
      | generatetext text="Hello world! How the heck are you?" count=6
      | filter predicate="(long(_serial) & 1) == 0" map="_raw = _raw.replace('world', 'Splunk')"
      
      | generatetext count=10 text="Hello world!"
      
      | pypygeneratetext count=10 text="Hello world!"
      
      | simulate csv=$SPLUNK_HOME/etc/apps/searchcommands_app/data/population.csv rate=50 interval=00:00:01 duration=00:00:05
      | countmatches fieldname=word_count pattern="\\w+" text
      | stats mean(word_count) stdev(word_count)
      
      | inputlookup tweets | countmatches fieldname=word_count pattern="\\w+" text
      | sum total=word_counts word_count
      
  • Run all examples.
  • Remove old temporary branches. This includes feature branches, old release branches, and most branches that have been merged to develop.
  • Ensure that all .rst files in the the docs directory include any new APIs added for this release.

Release Steps

  • Update the version number in splunklib/__init__.py, readme.md, examples/searchcommands_app/setup.py, and the user agent string at the bottom of binding.py.
  • Create release branch off of develop (release/1.6.2)
    • git checkout develop
    • git pull
    • git checkout -b release/1.6.2
  • Make sure the version number change didn't break anything:
    • Install the SDK in a clean VM and in a clean virtualenv.
    • Wait for Travis CI to run tests against the release/1.6.2 branch.
    • Run the SDK examples.
  • Make sure the docs are up to date, more info internally on Confluence
  • Merge to master locally. Ensure the commit message is "Release 1.6.2".
    • git checkout master
    • git merge --no-ff -m "Release 1.6.2" release/1.6.2
  • Tag the above commit as 1.6.2.
    • git tag 1.6.2
  • Push the master and the 1.6.2 tag to GitHub.
    • git push origin master
    • git push --tags
  • Upload to PyPI:
    • python setup.py register sdist bdist_egg upload
    • It will ask you for login info, which you can find on the internal Confluence.
  • Delete the release branch:
    • git push origin :release/1.6.2
    • git branch -d release/1.6.2
  • Sanity check that released version works:
    • Run examples locally
  • Create a ZIP of the SDK and send it to your Docs team:
    • Download the ZIP from the GitHub releases page.
    • Make sure the file reflects the current version (for example, splunk-sdk-python-1.6.2.zip).
  • Work with Docs team to:
    • Post ZIP file.
    • Update Readme. For point releases, the version number needs to be updated at a minimum.
    • Update Changelog, includes a list of changes for the current version.
    • Push Dev Portal updates. For point releases, the "What's new" page and download links need to be updated at the very least.
    • Publish updated API Reference (docs.splunk.com/Documentation/SDK).
    • Create both MD5 and SHA-512 hashes from final ZIP download. Docs will contact the Web team to upload these files.
  • Hand off to marketing to announce. See next section.
  • Update the internal version of the SDK

Announce!

Hurrah, the new release is basically done! You can now announce it on the following channels:

Clone this wiki locally