mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-22 17:55:57 +01:00
relase: make github operations perfect
This commit is contained in:
committed by
Ciro Santilli
parent
b2238daee3
commit
60f0e98644
78
release-upload
Executable file
78
release-upload
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
'''
|
||||
Usage: https://github.com/cirosantilli/linux-kernel-module-cheat#release-zip
|
||||
|
||||
Implementation:
|
||||
|
||||
* https://stackoverflow.com/questions/5207269/how-to-release-a-build-artifact-asset-on-github-with-a-script/52354732#52354732
|
||||
* https://stackoverflow.com/questions/38153418/can-someone-give-a-python-requests-example-of-uploading-a-release-asset-in-githu/52354681#52354681
|
||||
'''
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
import urllib.error
|
||||
|
||||
import common
|
||||
|
||||
def main():
|
||||
repo = common.github_repo_id
|
||||
tag = 'sha-{}'.format(common.sha)
|
||||
upload_path = common.release_zip_file
|
||||
|
||||
# Check the release already exists.
|
||||
try:
|
||||
_json = common.github_make_request(path='/releases/tags/' + tag)
|
||||
except urllib.error.HTTPError as e:
|
||||
if e.code == 404:
|
||||
release_exists = False
|
||||
else:
|
||||
raise e
|
||||
else:
|
||||
release_exists = True
|
||||
release_id = _json['id']
|
||||
|
||||
# Create release if not yet created.
|
||||
if not release_exists:
|
||||
_json = common.github_make_request(
|
||||
authenticate=True,
|
||||
data=json.dumps({
|
||||
'tag_name': tag,
|
||||
'name': tag,
|
||||
'prerelease': True,
|
||||
}).encode(),
|
||||
path='/releases'
|
||||
)
|
||||
release_id = _json['id']
|
||||
|
||||
asset_name = os.path.split(upload_path)[1]
|
||||
|
||||
# Clear the prebuilts for a upload.
|
||||
_json = common.github_make_request(
|
||||
path=('/releases/' + str(release_id) + '/assets'),
|
||||
)
|
||||
for asset in _json:
|
||||
if asset['name'] == asset_name:
|
||||
_json = common.github_make_request(
|
||||
authenticate=True,
|
||||
path=('/releases/assets/' + str(asset['id'])),
|
||||
method='DELETE',
|
||||
)
|
||||
break
|
||||
|
||||
# Upload the prebuilt.
|
||||
with open(upload_path, 'br') as myfile:
|
||||
content = myfile.read()
|
||||
_json = common.github_make_request(
|
||||
authenticate=True,
|
||||
data=content,
|
||||
extra_headers={'Content-Type': 'application/zip'},
|
||||
path=('/releases/' + str(release_id) + '/assets'),
|
||||
subdomain='uploads',
|
||||
url_params={'name': asset_name},
|
||||
)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user