|
|
|
@ -53,7 +53,42 @@ options:
|
|
|
|
|
required: true
|
|
|
|
|
description:
|
|
|
|
|
- Action to perform
|
|
|
|
|
choices: [ 'latest_release' ]
|
|
|
|
|
choices: [ 'latest_release', 'create_release' ]
|
|
|
|
|
tag:
|
|
|
|
|
required: false
|
|
|
|
|
description:
|
|
|
|
|
- Tag name when creating a release. Required when using action is set to C(create_release).
|
|
|
|
|
version_added: 2.4
|
|
|
|
|
target:
|
|
|
|
|
required: false
|
|
|
|
|
description:
|
|
|
|
|
- Target of release when creating a release
|
|
|
|
|
version_added: 2.4
|
|
|
|
|
name:
|
|
|
|
|
required: false
|
|
|
|
|
description:
|
|
|
|
|
- Name of release when creating a release
|
|
|
|
|
version_added: 2.4
|
|
|
|
|
body:
|
|
|
|
|
required: false
|
|
|
|
|
description:
|
|
|
|
|
- Description of the release when creating a release
|
|
|
|
|
version_added: 2.4
|
|
|
|
|
draft:
|
|
|
|
|
required: false
|
|
|
|
|
description:
|
|
|
|
|
- Sets if the release is a draft or not. (boolean)
|
|
|
|
|
default: false
|
|
|
|
|
version_added: 2.4
|
|
|
|
|
choices: ['True', 'False']
|
|
|
|
|
prerelease:
|
|
|
|
|
required: false
|
|
|
|
|
description:
|
|
|
|
|
- Sets if the release is a prerelease or not. (boolean)
|
|
|
|
|
default: false
|
|
|
|
|
version_added: 2.4
|
|
|
|
|
choices: ['True', 'False']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
author:
|
|
|
|
|
- "Adrian Moisey (@adrianmoisey)"
|
|
|
|
@ -62,7 +97,7 @@ requirements:
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
EXAMPLES = '''
|
|
|
|
|
- name: Get latest release of test/test
|
|
|
|
|
- name: Get latest release of testuseer/testrepo
|
|
|
|
|
github_release:
|
|
|
|
|
token: tokenabc1234567890
|
|
|
|
|
user: testuser
|
|
|
|
@ -75,6 +110,18 @@ EXAMPLES = '''
|
|
|
|
|
password: secret123
|
|
|
|
|
repo: testrepo
|
|
|
|
|
action: latest_release
|
|
|
|
|
|
|
|
|
|
- name: Create a new release
|
|
|
|
|
github:
|
|
|
|
|
token: tokenabc1234567890
|
|
|
|
|
user: testuser
|
|
|
|
|
repo: testrepo
|
|
|
|
|
action: create_release
|
|
|
|
|
tag: test
|
|
|
|
|
target: master
|
|
|
|
|
name: My Release
|
|
|
|
|
body: Some description
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
RETURN = '''
|
|
|
|
@ -101,11 +148,19 @@ def main():
|
|
|
|
|
user=dict(required=True),
|
|
|
|
|
password=dict(no_log=True),
|
|
|
|
|
token=dict(no_log=True),
|
|
|
|
|
action=dict(required=True, choices=['latest_release']),
|
|
|
|
|
action=dict(
|
|
|
|
|
required=True, choices=['latest_release', 'create_release']),
|
|
|
|
|
tag=dict(type='str'),
|
|
|
|
|
target=dict(type='str'),
|
|
|
|
|
name=dict(type='str'),
|
|
|
|
|
body=dict(type='str'),
|
|
|
|
|
draft=dict(type='bool', default=False),
|
|
|
|
|
prerelease=dict(type='bool', default=False),
|
|
|
|
|
),
|
|
|
|
|
supports_check_mode=True,
|
|
|
|
|
required_one_of=(('password', 'token'),),
|
|
|
|
|
mutually_exclusive=(('password', 'token'),),
|
|
|
|
|
required_if=[('action', 'create_release', ['tag'])],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if not HAS_GITHUB_API:
|
|
|
|
@ -117,6 +172,12 @@ def main():
|
|
|
|
|
password = module.params['password']
|
|
|
|
|
login_token = module.params['token']
|
|
|
|
|
action = module.params['action']
|
|
|
|
|
tag = module.params.get('tag')
|
|
|
|
|
target = module.params.get('target')
|
|
|
|
|
name = module.params.get('name')
|
|
|
|
|
body = module.params.get('body')
|
|
|
|
|
draft = module.params.get('draft')
|
|
|
|
|
prerelease = module.params.get('prerelease')
|
|
|
|
|
|
|
|
|
|
# login to github
|
|
|
|
|
try:
|
|
|
|
@ -145,6 +206,19 @@ def main():
|
|
|
|
|
else:
|
|
|
|
|
module.exit_json(tag=None)
|
|
|
|
|
|
|
|
|
|
if action == 'create_release':
|
|
|
|
|
release_exists = repository.release_from_tag(tag)
|
|
|
|
|
if release_exists:
|
|
|
|
|
module.exit_json(
|
|
|
|
|
skipped=True, msg="Release for tag %s already exists." % tag)
|
|
|
|
|
|
|
|
|
|
release = repository.create_release(
|
|
|
|
|
tag, target, name, body, draft, prerelease)
|
|
|
|
|
if release:
|
|
|
|
|
module.exit_json(tag=release.tag_name)
|
|
|
|
|
else:
|
|
|
|
|
module.exit_json(tag=None)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
main()
|
|
|
|
|