diff --git a/.circleci/config.yml b/.circleci/config.yml
index 73640f16085..299a3b8fcdc 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -992,6 +992,33 @@ jobs:
command: './scripts/ci-job-succeeded.sh'
when: on_success
+ build-ee-msi:
+ docker:
+ - image: grafana/wix-toolset-ci:v3
+ steps:
+ - checkout
+ - run:
+ name: ci job started
+ command: './scripts/ci-job-started.sh'
+ - attach_workspace:
+ at: .
+ - run:
+ name: Build EE MSI
+ command: './scripts/build/ci-msi-build/ci-msi-build-ee.sh'
+ - persist_to_workspace:
+ root: .
+ paths:
+ - enterprise-dist/grafana-*.msi
+ - enterprise-dist/grafana-*.msi.sha256
+ - run:
+ name: ci job failed
+ command: './scripts/ci-job-failed.sh'
+ when: on_fail
+ - run:
+ name: ci job succeeded
+ command: './scripts/ci-job-succeeded.sh'
+ when: on_success
+
store-build-artifacts:
docker:
- image: circleci/node:12
@@ -1172,6 +1199,7 @@ workflows:
- mysql-integration-test
- postgres-integration-test
- build-all-enterprise
+ - build-ee-msi
filters: *filter-only-master
- build-oss-msi:
requires:
@@ -1183,6 +1211,16 @@ workflows:
- shellcheck
- mysql-integration-test
- postgres-integration-test
+ - build-ee-msi:
+ requires:
+ - build-all-enterprise
+ - test-backend
+ - test-frontend
+ - codespell
+ - lint-go
+ - shellcheck
+ - mysql-integration-test
+ - postgres-integration-test
filters: *filter-only-master
- end-to-end-test:
requires:
@@ -1237,6 +1275,7 @@ workflows:
- shellcheck
- mysql-integration-test
- postgres-integration-test
+ - build-ee-msi
filters: *filter-only-release
- grafana-docker-release:
requires:
@@ -1284,6 +1323,16 @@ workflows:
- shellcheck
- mysql-integration-test
- postgres-integration-test
+ - build-ee-msi:
+ requires:
+ - build-all-enterprise
+ - test-backend
+ - test-frontend
+ - codespell
+ - lint-go
+ - shellcheck
+ - mysql-integration-test
+ - postgres-integration-test
filters: *filter-only-release
- end-to-end-test-release:
requires:
diff --git a/scripts/build/ci-msi-build/Dockerfile b/scripts/build/ci-msi-build/Dockerfile
new file mode 100644
index 00000000000..1ff7ca9f575
--- /dev/null
+++ b/scripts/build/ci-msi-build/Dockerfile
@@ -0,0 +1,13 @@
+FROM grafana/wix-toolset-ci:v3
+
+RUN mkdir -p /tmp/dist /tmp/cache && \
+ cd /tmp/dist && \
+ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-6.5.1.windows-amd64.zip && \
+ unzip -l grafana-enterprise-6.5.1.windows-amd64.zip
+
+COPY . /package-grafana
+WORKDIR /package-grafana
+
+RUN cp ./msigenerator/cache/nssm-2.24.zip /tmp/cache
+
+RUN cd msigenerator && python3 generator/build.py -e
diff --git a/scripts/build/ci-msi-build/ci-msi-build-oss.sh b/scripts/build/ci-msi-build/ci-msi-build-oss.sh
index e0442c708f2..6bf3d5398fa 100755
--- a/scripts/build/ci-msi-build/ci-msi-build-oss.sh
+++ b/scripts/build/ci-msi-build/ci-msi-build-oss.sh
@@ -10,7 +10,7 @@ ls -al /tmp/dist
# nssm download has been unreliable, use a cached copy of it
echo "Caching NSSM"
mkdir -p /tmp/cache
-cp ./scripts/build/ci-msi-build/oss/cache/nssm-2.24.zip /tmp/cache
+cp ./scripts/build/ci-msi-build/msigenerator/cache/nssm-2.24.zip /tmp/cache
# a build can be specified, which will be pulled down
#python3 generator/build.py --build 5.4.3
#echo "LIGHT config"
@@ -18,7 +18,7 @@ cp ./scripts/build/ci-msi-build/oss/cache/nssm-2.24.zip /tmp/cache
#cat /home/xclient/wix/light.exe.config
#cp ./scripts/build/ci-msi-build/oss/light.exe.config /home/xclient/wix/light.exe.config
#cat /home/xclient/wix/light.exe.config
-cd ./scripts/build/ci-msi-build/oss
+cd ./scripts/build/ci-msi-build/msigenerator
echo "Building MSI"
python3 generator/build.py "$@"
chmod a+x /tmp/scratch/*.msi
diff --git a/scripts/build/ci-msi-build/oss/Makefile b/scripts/build/ci-msi-build/msigenerator/Makefile
similarity index 100%
rename from scripts/build/ci-msi-build/oss/Makefile
rename to scripts/build/ci-msi-build/msigenerator/Makefile
diff --git a/scripts/build/ci-msi-build/oss/cache/nssm-2.24.zip b/scripts/build/ci-msi-build/msigenerator/cache/nssm-2.24.zip
similarity index 100%
rename from scripts/build/ci-msi-build/oss/cache/nssm-2.24.zip
rename to scripts/build/ci-msi-build/msigenerator/cache/nssm-2.24.zip
diff --git a/scripts/build/ci-msi-build/oss/ci-wrapper.sh b/scripts/build/ci-msi-build/msigenerator/ci-wrapper.sh
similarity index 100%
rename from scripts/build/ci-msi-build/oss/ci-wrapper.sh
rename to scripts/build/ci-msi-build/msigenerator/ci-wrapper.sh
diff --git a/scripts/build/ci-msi-build/oss/docker-compose.yml b/scripts/build/ci-msi-build/msigenerator/docker-compose.yml
similarity index 100%
rename from scripts/build/ci-msi-build/oss/docker-compose.yml
rename to scripts/build/ci-msi-build/msigenerator/docker-compose.yml
diff --git a/scripts/build/ci-msi-build/oss/generator/build.py b/scripts/build/ci-msi-build/msigenerator/generator/build.py
similarity index 92%
rename from scripts/build/ci-msi-build/oss/generator/build.py
rename to scripts/build/ci-msi-build/msigenerator/generator/build.py
index 655b09c0d14..e17022a7807 100755
--- a/scripts/build/ci-msi-build/oss/generator/build.py
+++ b/scripts/build/ci-msi-build/msigenerator/generator/build.py
@@ -103,7 +103,7 @@ def remove_long_paths():
print('Skipped: {}'.format(file))
-def build_oss(zip_file, extracted_name, PRODUCT_VERSION, config, features):
+def build_msi(zip_file, extracted_name, PRODUCT_VERSION, config, features, is_enterprise):
# keep reference to source directory, will need to switch back and
# forth during the process
src_dir = os.getcwd()
@@ -112,6 +112,7 @@ def build_oss(zip_file, extracted_name, PRODUCT_VERSION, config, features):
os.mkdir('/tmp/a')
target_dir_name = '/tmp/a'
extract_zip(zip_file, target_dir_name)
+ os.system('ls -al /tmp/a')
# the zip file contains a version, which will not work when upgrading,
# and ends up with paths longer
# than light.exe can parse (windows issue)
@@ -229,8 +230,13 @@ def build_oss(zip_file, extracted_name, PRODUCT_VERSION, config, features):
os.system(cmd)
except Exception as ex:
print(ex)
+
# copy to scratch with version included
- msi_filename = '/tmp/scratch/{}.windows-amd64.msi'.format(extracted_name)
+ msi_filename = '/tmp/scratch/grafana-{}.windows-amd64.msi'.format(PRODUCT_VERSION)
+
+ if is_enterprise:
+ msi_filename = '/tmp/scratch/grafana-enterprise-{}.windows-amd64.msi'.format(PRODUCT_VERSION)
+
shutil.copy2('grafana.msi', msi_filename)
os.system('ls -al /tmp/scratch')
print('LIGHT COMPLETE')
@@ -238,25 +244,36 @@ def build_oss(zip_file, extracted_name, PRODUCT_VERSION, config, features):
# extract_dir.cleanup()
-def main(file_loader, env, grafana_version, zip_file, extracted_name):
+def main(file_loader, env, grafana_version, zip_file, extracted_name, is_enterprise):
UPGRADE_VERSION = OSS_UPGRADE_VERSION
GRAFANA_VERSION = grafana_version
- PRODUCT_NAME = OSS_PRODUCT_NAME
+ PRODUCT_TITLE = OSS_PRODUCT_NAME
+ PRODUCT_NAME = 'GrafanaOSS'
# PRODUCT_VERSION=GRAFANA_VERSION
# MSI version cannot have anything other
# than a x.x.x.x format, numbers only
PRODUCT_VERSION = GRAFANA_VERSION.split('-')[0]
+ LICENSE = 'LICENSE.rtf'
+
+
+ if is_enterprise:
+ UPGRADE_VERSION = ENTERPRISE_UPGRADE_VERSION
+ PRODUCT_TITLE = ENTERPRISE_PRODUCT_NAME
+ PRODUCT_NAME = 'GrafanaEnterprise'
+ LICENSE = 'EE_LICENSE.rtf'
+
config = {
'grafana_version': PRODUCT_VERSION,
'upgrade_code': UPGRADE_VERSION,
'product_name': PRODUCT_NAME,
- 'manufacturer': 'Grafana Labs'
+ 'manufacturer': 'Grafana Labs',
+ 'license': LICENSE
}
features = [
{
- 'name': 'GrafanaOSS',
- 'title': PRODUCT_NAME,
+ 'name': PRODUCT_NAME,
+ 'title': PRODUCT_TITLE,
'component_groups': [
{
'ref_id': 'GrafanaX64',
@@ -275,7 +292,7 @@ def main(file_loader, env, grafana_version, zip_file, extracted_name):
]
}
]
- build_oss(zip_file, extracted_name, PRODUCT_VERSION, config, features)
+ build_msi(zip_file, extracted_name, PRODUCT_VERSION, config, features, is_enterprise)
if __name__ == '__main__':
@@ -313,7 +330,7 @@ if __name__ == '__main__':
grafana_version, grafana_hash, is_enterprise = detect_version(DIST_LOCATION)
# check for enterprise flag
- if args.enterprise:
+ if args.enterprise and args.build:
grafana_version = 'enterprise-{}'.format(args.build)
#
print('Detected Version: {}'.format(grafana_version))
@@ -322,7 +339,7 @@ if __name__ == '__main__':
print('Enterprise: {}'.format(is_enterprise))
if is_enterprise:
zip_file = '{}/grafana-enterprise-{}.windows-amd64.zip'.format(DIST_LOCATION, grafana_version)
- extracted_name = 'grafana-enterprise-{}'.format(grafana_version)
+ extracted_name = 'grafana-{}'.format(grafana_version)
else:
# the file can have a build hash
if grafana_hash:
@@ -336,4 +353,4 @@ if __name__ == '__main__':
if not os.path.isfile(zip_file):
zip_file = get_zip(grafana_version, zip_file)
- main(file_loader, env, grafana_version, zip_file, extracted_name)
+ main(file_loader, env, grafana_version, zip_file, extracted_name, is_enterprise)
diff --git a/scripts/build/ci-msi-build/oss/generator/utils.py b/scripts/build/ci-msi-build/msigenerator/generator/utils.py
similarity index 95%
rename from scripts/build/ci-msi-build/oss/generator/utils.py
rename to scripts/build/ci-msi-build/msigenerator/generator/utils.py
index 272c93ac42d..a7541299530 100644
--- a/scripts/build/ci-msi-build/oss/generator/utils.py
+++ b/scripts/build/ci-msi-build/msigenerator/generator/utils.py
@@ -50,10 +50,12 @@ def detect_version(dist_path):
print('Skipping detection, no matches')
return
firstFile = fileList[0]
- p1 = re.search(r'grafana-(\d\.\d\.\d)\.windows-amd64.zip$', firstFile)
+ p1 = re.search(r'grafana-(enterprise-)?(\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)
+ detectedVersion = p1.group(2)
+ if p1.group(1) == 'enterprise-':
+ isEnterprise = True
if p2:
detectedVersion = p2.group(1)
detectedHash = p2.group(2)
diff --git a/scripts/build/ci-msi-build/oss/light.exe.config b/scripts/build/ci-msi-build/msigenerator/light.exe.config
similarity index 100%
rename from scripts/build/ci-msi-build/oss/light.exe.config
rename to scripts/build/ci-msi-build/msigenerator/light.exe.config
diff --git a/scripts/build/ci-msi-build/oss/requirements.txt b/scripts/build/ci-msi-build/msigenerator/requirements.txt
similarity index 100%
rename from scripts/build/ci-msi-build/oss/requirements.txt
rename to scripts/build/ci-msi-build/msigenerator/requirements.txt
diff --git a/scripts/build/ci-msi-build/oss/resources/images/grafana_dialog_background.bmp b/scripts/build/ci-msi-build/msigenerator/resources/images/grafana_dialog_background.bmp
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/images/grafana_dialog_background.bmp
rename to scripts/build/ci-msi-build/msigenerator/resources/images/grafana_dialog_background.bmp
diff --git a/scripts/build/ci-msi-build/oss/resources/images/grafana_dialog_background.png b/scripts/build/ci-msi-build/msigenerator/resources/images/grafana_dialog_background.png
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/images/grafana_dialog_background.png
rename to scripts/build/ci-msi-build/msigenerator/resources/images/grafana_dialog_background.png
diff --git a/scripts/build/ci-msi-build/oss/resources/images/grafana_icon.ico b/scripts/build/ci-msi-build/msigenerator/resources/images/grafana_icon.ico
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/images/grafana_icon.ico
rename to scripts/build/ci-msi-build/msigenerator/resources/images/grafana_icon.ico
diff --git a/scripts/build/ci-msi-build/oss/resources/images/grafana_top_banner.bmp b/scripts/build/ci-msi-build/msigenerator/resources/images/grafana_top_banner.bmp
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/images/grafana_top_banner.bmp
rename to scripts/build/ci-msi-build/msigenerator/resources/images/grafana_top_banner.bmp
diff --git a/scripts/build/ci-msi-build/oss/resources/images/grafana_top_banner.png b/scripts/build/ci-msi-build/msigenerator/resources/images/grafana_top_banner.png
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/images/grafana_top_banner.png
rename to scripts/build/ci-msi-build/msigenerator/resources/images/grafana_top_banner.png
diff --git a/scripts/build/ci-msi-build/oss/resources/images/grafana_top_banner_white.bmp b/scripts/build/ci-msi-build/msigenerator/resources/images/grafana_top_banner_white.bmp
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/images/grafana_top_banner_white.bmp
rename to scripts/build/ci-msi-build/msigenerator/resources/images/grafana_top_banner_white.bmp
diff --git a/scripts/build/ci-msi-build/oss/resources/license/LICENSE.md b/scripts/build/ci-msi-build/msigenerator/resources/license/LICENSE.md
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/license/LICENSE.md
rename to scripts/build/ci-msi-build/msigenerator/resources/license/LICENSE.md
diff --git a/scripts/build/ci-msi-build/oss/resources/license/LICENSE.rtf b/scripts/build/ci-msi-build/msigenerator/resources/license/LICENSE.rtf
similarity index 100%
rename from scripts/build/ci-msi-build/oss/resources/license/LICENSE.rtf
rename to scripts/build/ci-msi-build/msigenerator/resources/license/LICENSE.rtf
diff --git a/scripts/build/ci-msi-build/oss/templates/common/grafana-firewall.wxs.j2 b/scripts/build/ci-msi-build/msigenerator/templates/common/grafana-firewall.wxs.j2
similarity index 100%
rename from scripts/build/ci-msi-build/oss/templates/common/grafana-firewall.wxs.j2
rename to scripts/build/ci-msi-build/msigenerator/templates/common/grafana-firewall.wxs.j2
diff --git a/scripts/build/ci-msi-build/oss/templates/common/grafana-service.wxs.j2 b/scripts/build/ci-msi-build/msigenerator/templates/common/grafana-service.wxs.j2
similarity index 100%
rename from scripts/build/ci-msi-build/oss/templates/common/grafana-service.wxs.j2
rename to scripts/build/ci-msi-build/msigenerator/templates/common/grafana-service.wxs.j2
diff --git a/scripts/build/ci-msi-build/oss/templates/common/product.wxs.j2 b/scripts/build/ci-msi-build/msigenerator/templates/common/product.wxs.j2
similarity index 96%
rename from scripts/build/ci-msi-build/oss/templates/common/product.wxs.j2
rename to scripts/build/ci-msi-build/msigenerator/templates/common/product.wxs.j2
index cd464804ef1..73780c81916 100644
--- a/scripts/build/ci-msi-build/oss/templates/common/product.wxs.j2
+++ b/scripts/build/ci-msi-build/msigenerator/templates/common/product.wxs.j2
@@ -17,7 +17,7 @@
-
+
diff --git a/scripts/build/ci-msi-build/oss/templates/oracle/oracle-environment.wxs.j2 b/scripts/build/ci-msi-build/msigenerator/templates/oracle/oracle-environment.wxs.j2
similarity index 100%
rename from scripts/build/ci-msi-build/oss/templates/oracle/oracle-environment.wxs.j2
rename to scripts/build/ci-msi-build/msigenerator/templates/oracle/oracle-environment.wxs.j2
diff --git a/scripts/build/ci-msi-build/oss/wrapper.sh b/scripts/build/ci-msi-build/msigenerator/wrapper.sh
similarity index 100%
rename from scripts/build/ci-msi-build/oss/wrapper.sh
rename to scripts/build/ci-msi-build/msigenerator/wrapper.sh
diff --git a/scripts/build/ci-msi-build/testbuild.sh b/scripts/build/ci-msi-build/testbuild.sh
new file mode 100755
index 00000000000..cd616b966dc
--- /dev/null
+++ b/scripts/build/ci-msi-build/testbuild.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+_image="ee-msi-build"
+_container="ee-build"
+
+docker build -t $_image .
+
+docker run --rm -d --name $_container $_image sleep 100
+docker cp $_container:/tmp/dist .
+docker stop $_container
+