Parse a version string into it's components.
    
    >>> parse_version_string("0.1")
    ([0, 1], 'jenkins', None)
    >>> parse_version_string("0.3.2-jenkins-3447876")
    ([0, 3, 2], 'jenkins', 3447876)

def parse_version_string(version_string):
    """
    Parse a version string into it's components.
    
    >>> parse_version_string("0.1")
    ([0, 1], 'jenkins', None)
    >>> parse_version_string("0.3.2-jenkins-3447876")
    ([0, 3, 2], 'jenkins', 3447876)
    """
    components = version_string.split('-') + [None, None]
    version = list(map(int, components[0].split('.')))
    build_tag = components[1] if components[1] else BUILD_TAG
    build_number = int(components[2]) if components[2] else components[2]

    return (version, build_tag, build_number)