<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def release(ctx, version):
 """ ``version`` should be a string like '0.4' or '1.0'. """

    invoke.run("git tag -s {0} -m '{0} release'".format(version))
    invoke.run("git push --tags")

    invoke.run("python setup.py sdist")

    invoke.run("twine upload -s dist/PyNaCl-{0}* ".format(version))

    session = requests.Session()

    token = getpass.getpass("Input the Jenkins token: ")
    response = session.post(
        "{0}/build".format(JENKINS_URL),
        params={
            "cause": "Building wheels for {0}".format(version),
            "token": token
        }
    )
    response.raise_for_status()
    wait_for_build_completed(session)
    paths = download_artifacts(session)
    invoke.run("twine upload {0}".format(" ".join(paths)))