From 0ffb58b7641966aaf652e12f5fe3a0b4a7bd9e1d Mon Sep 17 00:00:00 2001
From: antonio2368 <antonio2368@users.noreply.github.com>
Date: Wed, 6 Oct 2021 01:20:37 -0700
Subject: [PATCH] Fix docker packaging and add for platform build (#257)

---
 .github/workflows/package_all.yaml | 31 +++++++++++++++++++++++-------
 CMakeLists.txt                     |  3 ---
 release/docker/package_deb_docker  |  3 +--
 release/package/run.sh             | 17 ++++++++++------
 src/telemetry/CMakeLists.txt       |  6 ++++--
 src/telemetry/telemetry.cpp        |  4 ++--
 6 files changed, 42 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/package_all.yaml b/.github/workflows/package_all.yaml
index 99cceb460..1573dfc7f 100644
--- a/.github/workflows/package_all.yaml
+++ b/.github/workflows/package_all.yaml
@@ -19,7 +19,7 @@ jobs:
       - name: "Upload package"
         uses: actions/upload-artifact@v2
         with:
-          name: centos-7_enterprise
+          name: centos-7
           path: build/output/centos-7/memgraph*.rpm
 
   centos-8:
@@ -36,7 +36,7 @@ jobs:
       - name: "Upload package"
         uses: actions/upload-artifact@v2
         with:
-          name: centos-8_enterprise
+          name: centos-8
           path: build/output/centos-8/memgraph*.rpm
 
   debian-9:
@@ -53,7 +53,7 @@ jobs:
       - name: "Upload package"
         uses: actions/upload-artifact@v2
         with:
-          name: debian-9_enterprise
+          name: debian-9
           path: build/output/debian-9/memgraph*.deb
 
   debian-10:
@@ -70,7 +70,7 @@ jobs:
       - name: "Upload package"
         uses: actions/upload-artifact@v2
         with:
-          name: debian-10_enterprise
+          name: debian-10
           path: build/output/debian-10/memgraph*.deb
 
   docker:
@@ -89,7 +89,7 @@ jobs:
       - name: "Upload package"
         uses: actions/upload-artifact@v2
         with:
-          name: docker_enterprise
+          name: docker
           path: build/output/docker/memgraph*.tar.gz
 
   ubuntu-1804:
@@ -106,7 +106,7 @@ jobs:
       - name: "Upload package"
         uses: actions/upload-artifact@v2
         with:
-          name: ubuntu-1804_enterprise
+          name: ubuntu-1804
           path: build/output/ubuntu-18.04/memgraph*.deb
 
   ubuntu-2004:
@@ -123,5 +123,22 @@ jobs:
       - name: "Upload package"
         uses: actions/upload-artifact@v2
         with:
-          name: ubuntu-2004_enterprise
+          name: ubuntu-2004
           path: build/output/ubuntu-20.04/memgraph*.deb
+
+  debian-10-platform:
+    runs-on: [self-hosted, DockerMgBuild]
+    timeout-minutes: 60
+    steps:
+      - name: "Set up repository"
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0 # Required because of release/get_version.py
+      - name: "Build package"
+        run: |
+          ./release/package/run.sh package debian-10 --for-platform
+      - name: "Upload package"
+        uses: actions/upload-artifact@v2
+        with:
+          name: debian-10-platform
+          path: build/output/debian-10/memgraph*.deb
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ae63e0a86..5036165fa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,9 +35,6 @@ else()
   message(FATAL_ERROR "Couldn't find clang and/or clang++!")
 endif()
 
-option(BUILD_FOR_DOCKER "Build Memgraph binary for docker." OFF)
-message(STATUS "BUILD_FOR_DOCKER: ${BUILD_FOR_DOCKER}")
-
 # -----------------------------------------------------------------------------
 
 project(memgraph)
diff --git a/release/docker/package_deb_docker b/release/docker/package_deb_docker
index 9484fce7c..9e8fdb9ec 100755
--- a/release/docker/package_deb_docker
+++ b/release/docker/package_deb_docker
@@ -35,8 +35,7 @@ cd ${working_dir}
 # Extract version and offering from deb name.
 deb_name=`echo $(basename "$deb_path") | sed 's/.deb$//'`
 version=`echo ${deb_name} | cut -d '_' -f 2 | rev | cut -d '-' -f 2- | rev | tr '+~' '__'`
-offering=`echo ${version} | cut -d '-' -f 2`
-dockerfile_path="${working_dir}/memgraph_${offering}.dockerfile"
+dockerfile_path="${working_dir}/memgraph.dockerfile"
 image_name="memgraph:${version}"
 package_name="memgraph-${version}-docker.tar.gz"
 
diff --git a/release/package/run.sh b/release/package/run.sh
index 7523ecfd2..a5b64046f 100755
--- a/release/package/run.sh
+++ b/release/package/run.sh
@@ -10,7 +10,7 @@ ACTIVATE_TOOLCHAIN="source /opt/${TOOLCHAIN_VERSION}/activate"
 HOST_OUTPUT_DIR="$PROJECT_ROOT/build/output"
 
 print_help () {
-    echo "$0 init|package {os} [--for-docker]|docker|test"
+    echo "$0 init|package {os} [--for-docker|--for-platform]|docker|test"
     echo ""
     echo "    OSs: ${SUPPORTED_OS[*]}"
     exit 1
@@ -28,10 +28,15 @@ make_package () {
     if [[ "$os" =~ ^"ubuntu".* ]]; then
         package_command=" cpack -G DEB --config ../CPackConfig.cmake "
     fi
-    docker_flag=" -DBUILD_FOR_DOCKER=OFF "
-    if [[ "$#" -gt 2 ]]; then
-        if [[ "$3" == "--for-docker" ]]; then
-            docker_flag=" -DBUILD_FOR_DOCKER=ON "
+    telemetry_id_override_flag=""
+    if [[ "$#" -gt 1 ]]; then
+        if [[ "$2" == "--for-docker" ]]; then
+            telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER "
+        elif [[ "$2" == "--for-platform" ]]; then
+            telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER-PLATFORM"
+        else
+          print_help
+          exit
         fi
     fi
     build_container="mgbuild_$os"
@@ -64,7 +69,7 @@ make_package () {
     echo "Building targeted package..."
     docker exec "$build_container" bash -c "cd /memgraph && ./init"
     docker exec "$build_container" bash -c "cd $container_build_dir && rm -rf ./*"
-    docker exec "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN && cmake -DCMAKE_BUILD_TYPE=release $docker_flag .."
+    docker exec "$build_container" bash -c "cd $container_build_dir && $ACTIVATE_TOOLCHAIN && cmake -DCMAKE_BUILD_TYPE=release $telemetry_id_override_flag .."
     # ' is used instead of " because we need to run make within the allowed
     # container resources.
     # shellcheck disable=SC2016
diff --git a/src/telemetry/CMakeLists.txt b/src/telemetry/CMakeLists.txt
index 1f5484588..43597554f 100644
--- a/src/telemetry/CMakeLists.txt
+++ b/src/telemetry/CMakeLists.txt
@@ -5,6 +5,8 @@ set(telemetry_src_files
 
 add_library(telemetry_lib STATIC ${telemetry_src_files})
 target_link_libraries(telemetry_lib mg-requests mg-kvstore mg-utils)
-if (BUILD_FOR_DOCKER)
-  target_compile_definitions(telemetry_lib PRIVATE DOCKER_BUILD)
+option(MG_TELEMETRY_ID_OVERRIDE "Override for the telemetry ID" STRING)
+if (MG_TELEMETRY_ID_OVERRIDE)
+  message(WARNING "Using telemetry ID override: ${MG_TELEMETRY_ID_OVERRIDE}")
+  target_compile_definitions(telemetry_lib PRIVATE MG_TELEMETRY_ID_OVERRIDE="${MG_TELEMETRY_ID_OVERRIDE}")
 endif()
diff --git a/src/telemetry/telemetry.cpp b/src/telemetry/telemetry.cpp
index 26b7c936e..bcb662774 100644
--- a/src/telemetry/telemetry.cpp
+++ b/src/telemetry/telemetry.cpp
@@ -26,8 +26,8 @@
 namespace telemetry {
 namespace {
 std::string GetMachineId() {
-#ifdef DOCKER_BUILD
-  return "DOCKER";
+#ifdef MG_TELEMETRY_ID_OVERRIDE
+  return MG_TELEMETRY_ID_OVERRIDE;
 #else
   // We assume we're on linux and we need to read the machine id from /etc/machine-id
   const auto machine_id_lines = utils::ReadLines("/etc/machine-id");