forked from IPKM/nmreval
reorganized AppImage build and upload scripts for GoCD build server; fixed zsync URL
This commit is contained in:
parent
1f81ca0a51
commit
e80247af07
@ -80,6 +80,6 @@ AppDir:
|
|||||||
command: ./AppRun
|
command: ./AppRun
|
||||||
|
|
||||||
AppImage:
|
AppImage:
|
||||||
update-information: 'zsync|http://mirror.infra.pkm/nmreval/NMReval-latest.AppImage.zsync'
|
update-information: 'zsync|http://mirror.infra.pkm/nmreval/NMReval-latest-x86_64.AppImage.zsync'
|
||||||
sign-key: None
|
sign-key: None
|
||||||
arch: x86_64
|
arch: x86_64
|
||||||
|
0
create_AppImage.bash → tools/build.sh
Normal file → Executable file
0
create_AppImage.bash → tools/build.sh
Normal file → Executable file
97
tools/upload_appimage.py
Executable file
97
tools/upload_appimage.py
Executable file
@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# from: https://github.com/kneufeld/minio-put/blob/master/minio-put.py
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import glob
|
||||||
|
import argparse
|
||||||
|
import datetime
|
||||||
|
import urllib.request
|
||||||
|
import yaml
|
||||||
|
import requests
|
||||||
|
|
||||||
|
def upload(key, secret, host, bucket, filename, dest_name=None):
|
||||||
|
"""
|
||||||
|
call this function when using this file as a library
|
||||||
|
date header must be relatively in sync with server or you
|
||||||
|
get forbidden error
|
||||||
|
returns True on success
|
||||||
|
raises on error
|
||||||
|
"""
|
||||||
|
base_name = os.path.basename(filename)
|
||||||
|
|
||||||
|
try:
|
||||||
|
hostname, port = host.split(':')
|
||||||
|
except ValueError:
|
||||||
|
hostname = host
|
||||||
|
|
||||||
|
if dest_name:
|
||||||
|
resource = f"/{bucket}/{dest_name}"
|
||||||
|
else:
|
||||||
|
resource = f"/{bucket}/{base_name}"
|
||||||
|
content_type = "application/octet-stream"
|
||||||
|
date = tznow().strftime('%a, %d %b %Y %X %z')
|
||||||
|
_signature = f"PUT\n\n{content_type}\n{date}\n{resource}"
|
||||||
|
signature = sig_hash(secret, _signature)
|
||||||
|
|
||||||
|
url = f"http://{host}{resource}"
|
||||||
|
headers = {
|
||||||
|
'Host': hostname,
|
||||||
|
'Date': date, # eg. Sat, 03 Mar 2018 10:11:16 -0700
|
||||||
|
'Content-Type': content_type,
|
||||||
|
'Authorization': f"AWS {key}:{signature}",
|
||||||
|
}
|
||||||
|
#import pprint
|
||||||
|
#pprint.pprint(headers)
|
||||||
|
#pprint.pprint(url)
|
||||||
|
filedata = open(filename, 'rb')
|
||||||
|
#req = urllib.request.Request(url, data=filedata, method='PUT', headers=headers)
|
||||||
|
#resp = urllib.request.urlopen(req)
|
||||||
|
req = requests.put(url, data=filedata, headers=headers)
|
||||||
|
print(req)
|
||||||
|
return req or True
|
||||||
|
|
||||||
|
# based on: https://gist.github.com/heskyji/5167567b64cb92a910a3
|
||||||
|
def sig_hash(secret, sig):
|
||||||
|
import hashlib
|
||||||
|
import hmac
|
||||||
|
import base64
|
||||||
|
|
||||||
|
# signature=`echo -en ${sig} | openssl sha1 -hmac ${secret} -binary | base64`
|
||||||
|
|
||||||
|
secret = bytes(secret, 'UTF-8')
|
||||||
|
sig = bytes(sig, 'UTF-8')
|
||||||
|
|
||||||
|
digester = hmac.new(secret, sig, hashlib.sha1)
|
||||||
|
signature1 = digester.digest()
|
||||||
|
signature2 = base64.standard_b64encode(signature1)
|
||||||
|
#signature2 = base64.urlsafe_b64encode(signature1)
|
||||||
|
|
||||||
|
return str(signature2, 'UTF-8')
|
||||||
|
|
||||||
|
|
||||||
|
def tznow():
|
||||||
|
def utc_to_local(utc_dt):
|
||||||
|
return utc_dt.replace(tzinfo=datetime.timezone.utc).astimezone(tz=None)
|
||||||
|
|
||||||
|
ts = datetime.datetime.utcnow()
|
||||||
|
return utc_to_local(ts)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
key = os.environ["s3_key"]
|
||||||
|
secret = os.environ["s3_secret"]
|
||||||
|
host = "mirror.infra.pkm:9000"
|
||||||
|
bucket = "nmreval-appimage"
|
||||||
|
appimage_version = yaml.safe_load(open("AppImageBuilder.yml"))["AppDir"]["app_info"]["version"]
|
||||||
|
filenames = [f"NMReval-{appimage_version}-x86_64.AppImage",
|
||||||
|
f"NMReval-{appimage_version}-x86_64.AppImage.zsync",
|
||||||
|
]
|
||||||
|
upload(key, secret, host, bucket,
|
||||||
|
f"NMReval-{appimage_version}-x86_64.AppImage")
|
||||||
|
upload(key, secret, host, bucket,
|
||||||
|
f"NMReval-{appimage_version}-x86_64.AppImage.zsync")
|
||||||
|
upload(key, secret, host, bucket,
|
||||||
|
f"NMReval-{appimage_version}-x86_64.AppImage.zsync",
|
||||||
|
f"NMReval-ldates-x86_64.AppImage.zsync")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user