Add Windows MSI generation to build process (#16502)
- add MSI generation to build process
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
import zipfile
|
||||
import os
|
||||
import glob
|
||||
import re
|
||||
import shutil
|
||||
import wget
|
||||
from jinja2 import Template, Environment, FileSystemLoader
|
||||
|
||||
|
||||
|
||||
def extract_zip(filename, target_dir):
|
||||
with zipfile.ZipFile(filename, 'r') as zip_ref:
|
||||
zip_ref.extractall(target_dir)
|
||||
|
||||
|
||||
def get_nssm(tmpPath, version):
|
||||
if not os.path.isdir(tmpPath):
|
||||
os.mkdir(tmpPath)
|
||||
target_filename = '{}/nssm-{}.zip'.format(tmpPath, version)
|
||||
exists = os.path.isfile(target_filename)
|
||||
if exists:
|
||||
return target_filename
|
||||
url = 'https://nssm.cc/release/nssm-{}.zip'.format(version)
|
||||
print('NSSM url is {}'.format(url))
|
||||
filename = wget.download(url, out=target_filename, bar=wget.bar_thermometer)
|
||||
return filename
|
||||
|
||||
|
||||
def get_zip(version, target_filename):
|
||||
exists = os.path.isfile(target_filename)
|
||||
if exists:
|
||||
return target_filename
|
||||
url = 'https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-{}.windows-amd64.zip'.format(version)
|
||||
#url = 'https://dl.grafana.com/enterprise/release/grafana-enterprise-{}.windows-amd64.zip'.format(version)
|
||||
filename = wget.download(url, out=target_filename, bar=wget.bar_thermometer)
|
||||
return filename
|
||||
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
def detect_version(dist_path):
|
||||
detectedVersion = ''
|
||||
detectedHash = ''
|
||||
isEnterprise = False
|
||||
print("Detecting Version...")
|
||||
# grafana-6.0.0-ca0bc2c5pre3.windows-amd64.zip
|
||||
# get files in directory matching pattern
|
||||
fileList = glob.glob(dist_path + '/grafana*.windows-amd64.zip')
|
||||
print(fileList)
|
||||
if len(fileList) == 0:
|
||||
print('Skipping detection, no matches')
|
||||
return
|
||||
firstFile = fileList[0]
|
||||
p1 = re.search(r'grafana-(\d\.\d\.\d)\.windows-amd64.zip$', firstFile)
|
||||
p2 = re.search(r'grafana-(\d\.\d\.\d)-(.*)\.windows-amd64.zip$', firstFile)
|
||||
if p1:
|
||||
detectedVersion = p1.group(1)
|
||||
if p2:
|
||||
detectedVersion = p2.group(1)
|
||||
detectedHash = p2.group(2)
|
||||
return detectedVersion, detectedHash, isEnterprise
|
||||
|
||||
#if os.path.isdir(dist_path + 'enterprise-dist'):
|
||||
# # grafana-enterprise-6.0.0-29b28127pre3.windows-amd64.zip
|
||||
# # get files in directory matching pattern
|
||||
# fileList = glob.glob(dist_path + '/enterprise-dist/grafana*.windows-amd64.zip')
|
||||
# firstFile = fileList[0]
|
||||
# p1 = re.search(r'grafana-enterprise-(\d\.\d\.\d)\.windows-amd64.zip$', firstFile)
|
||||
# p2 = re.search(r'grafana-enterprise-(\d\.\d\.\d)-(.*)\.windows-amd64.zip$', firstFile)
|
||||
# if p1:
|
||||
# detectedVersion = p1.group(1)
|
||||
# isEnterprise = True
|
||||
# if p2:
|
||||
# detectedVersion = p2.group(1)
|
||||
# detectedHash = p2.group(2)
|
||||
# isEnterprise = True
|
||||
# return detectedVersion, detectedHash, isEnterprise
|
||||
|
||||
|
||||
def generate_product_wxs(env, config, features, scratch_file, target_dir):
|
||||
template = env.get_template('common/product.wxs.j2')
|
||||
output = template.render(config=config, features=features)
|
||||
fh = open(scratch_file, 'w')
|
||||
fh.write(output)
|
||||
fh.close()
|
||||
shutil.copy2(scratch_file, target_dir)
|
||||
|
||||
def generate_service_wxs(env, grafana_version, scratch_file, target_dir, nssm_version='2.24'):
|
||||
template = env.get_template('common/grafana-service.wxs.j2')
|
||||
output = template.render(grafana_version=grafana_version, nssm_version=nssm_version)
|
||||
fh = open(scratch_file, 'w')
|
||||
fh.write(output)
|
||||
fh.close()
|
||||
shutil.copy2(scratch_file, target_dir)
|
||||
|
||||
def generate_firewall_wxs(env, grafana_version, scratch_file, target_dir):
|
||||
os.system("ls -al templates")
|
||||
template = env.get_template('common/grafana-firewall.wxs.j2')
|
||||
output = template.render(grafana_version=grafana_version)
|
||||
fh = open(scratch_file, 'w')
|
||||
fh.write(output)
|
||||
fh.close()
|
||||
shutil.copy2(scratch_file, target_dir)
|
||||
|
||||
|
||||
def generate_oracle_environment_wxs(env, instant_client_version, scratch_file, target_dir):
|
||||
template = env.get_template('oracle/oracle-environment.wxs.j2')
|
||||
output = template.render(instant_client_version=instant_client_version)
|
||||
fh = open(scratch_file, 'w')
|
||||
fh.write(output)
|
||||
fh.close()
|
||||
shutil.copy2(scratch_file, target_dir)
|
||||
|
||||
def copy_static_files(target_dir):
|
||||
for item in os.listdir('resources/images'):
|
||||
s = os.path.join('resources/images', item)
|
||||
d = os.path.join(target_dir, item)
|
||||
shutil.copy2(s, d)
|
||||
for item in os.listdir('resources/license'):
|
||||
s = os.path.join('resources/license', item)
|
||||
d = os.path.join(target_dir, item)
|
||||
shutil.copy2(s, d)
|
||||
Reference in New Issue
Block a user