mirror of
https://github.com/kiwix/kiwix-build.git
synced 2025-06-26 10:11:27 +00:00
Build kiwix-lib-app in the CI and publish the release version.
This commit is contained in:
121
scripts/upload_kiwix_lib_android_to_bintray.py
Executable file
121
scripts/upload_kiwix_lib_android_to_bintray.py
Executable file
@ -0,0 +1,121 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from requests.auth import HTTPBasicAuth
|
||||||
|
import os, sys
|
||||||
|
import json
|
||||||
|
|
||||||
|
bintray_auth = (os.environ['BINTRAY_USER'], os.environ['BINTRAY_PASS'])
|
||||||
|
|
||||||
|
|
||||||
|
def generate_pom_file(version):
|
||||||
|
template = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.kiwix.kiwixlib</groupId>
|
||||||
|
<artifactId>kiwixlib</artifactId>
|
||||||
|
<version>{version}</version>
|
||||||
|
<packaging>aar</packaging>
|
||||||
|
<name>kiwixlib</name>
|
||||||
|
<description>kiwixlib</description>
|
||||||
|
<url>https://github.com/kiwix/kiwix-lib</url>
|
||||||
|
<licenses>
|
||||||
|
<license>
|
||||||
|
<name>GPLv3</name>
|
||||||
|
<url>https://www.gnu.org/licenses/gpl-3.0.en.html</url>
|
||||||
|
</license>
|
||||||
|
</licenses>
|
||||||
|
<developers>
|
||||||
|
<developer>
|
||||||
|
<id>kiwix</id>
|
||||||
|
<name>kiwix</name>
|
||||||
|
<email>contact@kiwix.org</email>
|
||||||
|
</developer>
|
||||||
|
</developers>
|
||||||
|
<scm>
|
||||||
|
<connection>https://github.com/kiwix/kiwix-lib.git</connection>
|
||||||
|
<developerConnection>https://github.com/kiwix/kiwix-lib.git</developerConnection>
|
||||||
|
<url>https://github.com/kiwix/kiwix-lib</url>
|
||||||
|
</scm>
|
||||||
|
</project>"""
|
||||||
|
return template.format(version=version)
|
||||||
|
|
||||||
|
|
||||||
|
def create_version(version):
|
||||||
|
url = "https://api.bintray.com/packages/kiwix/kiwix/kiwixlib/versions"
|
||||||
|
payload = {
|
||||||
|
'name': version,
|
||||||
|
'desc': 'Release of kiwix-lib'
|
||||||
|
}
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
|
||||||
|
r = requests.post(url, data=json.dumps(payload), headers=headers, auth=bintray_auth)
|
||||||
|
rcode = r.status_code
|
||||||
|
|
||||||
|
if rcode == 409:
|
||||||
|
print("Bintray version %s already exists, skipping." % version)
|
||||||
|
return True
|
||||||
|
|
||||||
|
rcode_family = rcode // 100
|
||||||
|
if rcode_family in (2, 3):
|
||||||
|
print("Bintray Version created!")
|
||||||
|
return True
|
||||||
|
|
||||||
|
print("ERROR : Bintray API response {}".format(code))
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def upload_archive(version, filename, artefact):
|
||||||
|
url_template = "https://api.bintray.com/content/kiwix/kiwix/kiwixlib/{version}/org/kiwix/kiwixlib/kiwixlib/{version}/{artefact}"
|
||||||
|
parameters = {
|
||||||
|
'publish': 1,
|
||||||
|
'override': 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Upload the main artefact
|
||||||
|
url = url_template.format(version=version, artefact=artefact)
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
r = requests.put(url, data=f, auth=bintray_auth, params=parameters)
|
||||||
|
|
||||||
|
rcode = r.status_code
|
||||||
|
rcode_family = rcode // 100
|
||||||
|
if rcode_family not in (2, 3):
|
||||||
|
print("ERROR: Fail to upload artefact")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Upload the pom file
|
||||||
|
pom_artefact = os.path.splitext(artefact) + ".pom"
|
||||||
|
url = url_template.format(version=version, artefact=pom_artefact)
|
||||||
|
data = generate_pom_file(version)
|
||||||
|
r = requests.put(url, data=data, auth=bintray_auth, params=parameters)
|
||||||
|
|
||||||
|
rcode = r.status_code
|
||||||
|
rcode_family = rcode // 100
|
||||||
|
if rcode_family not in (2, 3):
|
||||||
|
print("ERROR: Fail to upload pom artefact")
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
info_file = sys.argv[1]
|
||||||
|
except IndexError:
|
||||||
|
print("Usage {} infofile".format(sys.argv[0]))
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
print("Use info file {}".format(info_file))
|
||||||
|
with open(info_file) as f:
|
||||||
|
options = json.load(f)
|
||||||
|
|
||||||
|
if not create_version(options['version']):
|
||||||
|
sys.exit("Cannot create version")
|
||||||
|
|
||||||
|
filepath = os.path.join(os.path.dirname(sys.argv[1]), options['filename'])
|
||||||
|
if not upload_archive(options['version'], filepath, options['artefact']):
|
||||||
|
sys.exit("Cannot upload artefact")
|
@ -8,6 +8,7 @@ from datetime import date
|
|||||||
import tarfile, zipfile
|
import tarfile, zipfile
|
||||||
import subprocess
|
import subprocess
|
||||||
import re
|
import re
|
||||||
|
import json
|
||||||
from urllib.request import urlopen
|
from urllib.request import urlopen
|
||||||
from urllib.error import URLError
|
from urllib.error import URLError
|
||||||
|
|
||||||
@ -37,6 +38,7 @@ NIGHTLY_ZIM_ARCHIVES_DIR = EXPORT_DIR/'NIGHTLY_ZIM_ARCHIVES'/NIGHTLY_DATE
|
|||||||
RELEASE_ZIM_ARCHIVES_DIR = EXPORT_DIR/'RELEASE_ZIM_ARCHIVES'
|
RELEASE_ZIM_ARCHIVES_DIR = EXPORT_DIR/'RELEASE_ZIM_ARCHIVES'
|
||||||
DIST_KIWIX_ARCHIVES_DIR = EXPORT_DIR/'DIST_KIWIX_ARCHIVES'
|
DIST_KIWIX_ARCHIVES_DIR = EXPORT_DIR/'DIST_KIWIX_ARCHIVES'
|
||||||
DIST_ZIM_ARCHIVES_DIR = EXPORT_DIR/'DIST_ZIM_ARCHIVES'
|
DIST_ZIM_ARCHIVES_DIR = EXPORT_DIR/'DIST_ZIM_ARCHIVES'
|
||||||
|
BINTRAY_ARCHIVES_DIR = EXPORT_DIR/'BINTRAY_ARCHIVES'
|
||||||
|
|
||||||
BIN_EXT = '.exe' if PLATFORM.startswith('win32_') else ''
|
BIN_EXT = '.exe' if PLATFORM.startswith('win32_') else ''
|
||||||
|
|
||||||
@ -286,6 +288,7 @@ for p in (NIGHTLY_KIWIX_ARCHIVES_DIR,
|
|||||||
RELEASE_ZIM_ARCHIVES_DIR,
|
RELEASE_ZIM_ARCHIVES_DIR,
|
||||||
DIST_KIWIX_ARCHIVES_DIR,
|
DIST_KIWIX_ARCHIVES_DIR,
|
||||||
DIST_ZIM_ARCHIVES_DIR,
|
DIST_ZIM_ARCHIVES_DIR,
|
||||||
|
BINTRAY_ARCHIVES_DIR,
|
||||||
BASE_EXPORT_DIR,
|
BASE_EXPORT_DIR,
|
||||||
GIT_EXPORT_DIR):
|
GIT_EXPORT_DIR):
|
||||||
try:
|
try:
|
||||||
@ -397,7 +400,9 @@ if environ['TRAVIS_EVENT_TYPE'] != 'cron' and not make_release:
|
|||||||
|
|
||||||
|
|
||||||
TARGETS = tuple()
|
TARGETS = tuple()
|
||||||
if PLATFORM.startswith('android'):
|
if PLATFORM == 'android':
|
||||||
|
TARGETS = ('kiwix-lib-app',)
|
||||||
|
elif PLATFORM.startswith('android_'):
|
||||||
TARGETS = ('libzim', 'kiwix-lib')
|
TARGETS = ('libzim', 'kiwix-lib')
|
||||||
elif PLATFORM.startswith('iOS'):
|
elif PLATFORM.startswith('iOS'):
|
||||||
TARGETS = ('libzim', 'kiwix-lib')
|
TARGETS = ('libzim', 'kiwix-lib')
|
||||||
@ -472,12 +477,25 @@ elif PLATFORM == 'i586_static':
|
|||||||
make_archive('kiwix-tools', 'linux-i586')
|
make_archive('kiwix-tools', 'linux-i586')
|
||||||
elif make_release and PLATFORM == 'flatpak':
|
elif make_release and PLATFORM == 'flatpak':
|
||||||
update_flathub_git()
|
update_flathub_git()
|
||||||
elif PLATFORM.startswith('android') and 'kiwix-android' in TARGETS:
|
elif PLATFORM == 'android' and 'kiwix-lib-app' in TARGETS:
|
||||||
APK_NAME = "kiwix-{}".format(PLATFORM)
|
if make_release and release_versions.get(project) is not None:
|
||||||
source_debug_dir = HOME/'BUILD_android'/'kiwix-android'/'app'/'build'/'outputs'/'apk'/'kiwix'/'debug'
|
postfix = main_project_versions[project]
|
||||||
source_release_dir = HOME/'BUILD_android'/'kiwix-android'/'app'/'build'/'outputs'/'apk'/'kiwix'/'release'
|
extra_postfix = release_versions.get(project)
|
||||||
shutil.copy(str(source_debug_dir/'app-kiwix-debug.apk'),
|
if extra_postfix:
|
||||||
str(NIGHTLY_KIWIX_ARCHIVES_DIR/"{}-debug.apk".format(APK_NAME)))
|
postfix = "{}-{}".format(postfix, extra_postfix)
|
||||||
shutil.copy(str(source_release_dir/'app-kiwix-release-unsigned.apk'),
|
|
||||||
str(NIGHTLY_KIWIX_ARCHIVES_DIR/"{}-release_signed".format(APK_NAME)))
|
arr_name = "kiwixlib-{}.aar".format(postfix)
|
||||||
|
|
||||||
|
source_release_dir = HOME/'BUILD_android'/'kiwix-lib-app'/'kiwixLibAndroid'/'build'/'outputs'/'aar'
|
||||||
|
shutil.copy(str(source_release_dir/'kiwixLibAndroid-release.aar'),
|
||||||
|
str(BINTRAY_ARCHIVES_DIR/arr_name))
|
||||||
|
|
||||||
|
json_filename = '{}_bintray_info.json'.format(arr_name)
|
||||||
|
data = {
|
||||||
|
version: main_project_versions[project],
|
||||||
|
filename : arr_name,
|
||||||
|
artefact: 'kiwixlib-5.1.0.aar'
|
||||||
|
}
|
||||||
|
with open(str(BINTRAY_ARCHIVES_DIR/json_filename), 'w') as f:
|
||||||
|
json.dump(data, f)
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd ${EXPORT_DIR}/GIT
|
(cd ${EXPORT_DIR}/GIT
|
||||||
GIT_REPOS=$(ls -l | awk '/^d/ { print $9 }')
|
GIT_REPOS=$(ls -l | awk '/^d/ { print $9 }')
|
||||||
if [[ "x$GIT_REPOS" != "x" ]]
|
if [[ "x$GIT_REPOS" != "x" ]]
|
||||||
then
|
then
|
||||||
@ -80,5 +80,16 @@ then
|
|||||||
)
|
)
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
|
BINTRAY_ARCHIVES=$(find $BINTRAY_ARCHIVES_DIR/*_bintray_info.json -type f)
|
||||||
|
if [[ "x$BINTRAY_ARCHIVES" != "x" ]]
|
||||||
|
then
|
||||||
|
for archive_info in $BINTRAY_ARCHIVES
|
||||||
|
do
|
||||||
|
${HOME}/kiwix-build/scripts/upload_kiwix_lib_android_to_bintray.py $archive_info
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user