From 93cbe504544845087034b25404799a99b291fe8d Mon Sep 17 00:00:00 2001
From: Recolic K <bensl@microsoft.com>
Date: Wed, 26 May 2021 16:08:36 +0800
Subject: [PATCH] .

---
 Azure-Deployment-Builder/guest-build.sh |  3 +-
 ControlPlane/guest-build.sh             | 29 +++++++++++++
 ControlPlane/host-daemon.fish           | 57 +++++++++++++++++++++++++
 3 files changed, 88 insertions(+), 1 deletion(-)
 create mode 100755 ControlPlane/guest-build.sh
 create mode 100644 ControlPlane/host-daemon.fish

diff --git a/Azure-Deployment-Builder/guest-build.sh b/Azure-Deployment-Builder/guest-build.sh
index d7c758e..c7169d9 100755
--- a/Azure-Deployment-Builder/guest-build.sh
+++ b/Azure-Deployment-Builder/guest-build.sh
@@ -30,7 +30,8 @@ echo START pack
 
 rm -f ~/build-output/net472/*.pdb &&
 cp Workflows/*.xaml ~/build-output/net472/ &&
-zip build-output.zip ~/build-output/net472/**
+zip build-output.zip ~/build-output/net472/** ||
+exit $?
 
 echo DONE
 
diff --git a/ControlPlane/guest-build.sh b/ControlPlane/guest-build.sh
new file mode 100755
index 0000000..fdd8f46
--- /dev/null
+++ b/ControlPlane/guest-build.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# This script runs on guest, build the proj
+
+nuget_uname="$1"
+nuget_pswd="$2"
+cd /buildroot/repo || exit $?
+
+#######################################
+echo START sync
+
+dotnet nuget add source "https://msazure.pkgs.visualstudio.com/_packaging/Official/nuget/v3/index.json" --name MSAZ --username "$nuget_uname" --password "$nuget_pswd" --store-password-in-clear-text &&
+dotnet nuget add source "https://o365exchange.pkgs.visualstudio.com/_packaging/Common/nuget/v3/index.json" --name O365Core --username "$nuget_uname" --password "$nuget_pswd" --store-password-in-clear-text &&
+dotnet nuget add source "https://skype.pkgs.visualstudio.com/DefaultCollection/_packaging/csc/nuget/v3/index.json" --name Skype --username "$nuget_uname" --password "$nuget_pswd" --store-password-in-clear-text &&
+dotnet nuget add source "https://o365exchange.pkgs.visualstudio.com/959adb23-f323-4d52-8203-ff34e5cbeefa/_packaging/M365FleetAGC/nuget/v3/index.json" --name M365FleetAGC --username "$nuget_uname" --password "$nuget_pswd" --store-password-in-clear-text &&
+openxt sync --local-repo-dir ~/nuget-local-repo --project-dir sources/dev/FleetAGC/src ||
+exit $?
+
+#######################################
+echo START build AzureToolkit
+
+mv sources/dev/FleetAGC/src/AzureToolKit ~ && cd ~/AzureToolKit &&
+source <(openxt env --local-repo-dir ~/nuget-local-repo --project-dir . --bin-dir ~/build-output --shell bash) &&
+csproj-to-5 *.csproj &&
+dotnet pack ||
+exit $?
+
+echo DONE
+
+
diff --git a/ControlPlane/host-daemon.fish b/ControlPlane/host-daemon.fish
new file mode 100644
index 0000000..73a9a04
--- /dev/null
+++ b/ControlPlane/host-daemon.fish
@@ -0,0 +1,57 @@
+#!/usr/bin/fish
+# daemon on host
+
+# Should have permission to clone repo, read repo, download nuget package. 
+# Personal-Access-Token, allow all read-only access. 
+set devops_uname bensl
+set devops_pswd (cat /home/recolic/scripts/ms-passwords/devops-password)
+# Using GNU grep, allow basic regex. (I assume nobody place SPACE and origin/ in his branch name. )
+set triggers master 'u/recolic/.*'
+
+set tmpf /tmp/ms-externci-controlplane
+test $devops_pswd = "" ; and echo "Please set devops_password" ; and exit 1
+
+function dobuild
+    set build_tag $args[1]
+    sudo docker run -ti --rm -v (pwd)/..:/buildroot recolic/openxt bash /buildroot/guest-build.sh $devops_uname $devops_pswd
+end
+
+test -d repo
+    or git clone https://$devops_uname:$devops_pswd@o365exchange.visualstudio.com/DefaultCollection/O365%20Core/_git/ControlPlane repo
+cd repo
+
+dobuild
+while true
+    # No error-crash in the loop.
+    git fetch 2>&1 > $tmpf
+    git reset --hard "@{upstream}"
+
+    # dirty string processing
+    for niddle in triggers
+        # Each line in the hit, means a updated branch need to be built. 
+        for line in (cat $tmpf | grep -E "origin/$niddle"'( |$)')
+            set hit_brname (echo $line | sed 's/^.* origin\///g' | sed 's/ .*$//g')
+            git checkout $hit_brname ; or continue
+            set curr_hash (echo $line | sed 's/^[^\.]*\.\.\.*//g' | sed 's/ .*$//g')
+            if test $curr_hash = ""
+                # new branch
+                set curr_hash (git rev-parse --short HEAD)
+            end
+
+            dobuild $hit_brname:$curr_hash
+        end
+    end
+
+    sleep 10m
+end
+
+
+
+    
+
+
+
+# * [new branch]              u/liuyong/cmdletToCreateAccountAdmin -> origin/u/liuyong/cmdletToCreateAccountAdmin
+# + 35d9e4838c6...5322513e658 u/qingche/AddModels0525 -> origin/u/qingche/AddModels0525  (forced update)
+#   f9b0bf716bb..d2283f560b7  u/ricardoo/SyncDeploymentParterClusterAndAzureDbWorkflowBulkInsert -> origin/u/ricardoo/SyncDeploymentParterClusterAndAzureDbWorkflowBulkInsert
+
-- 
GitLab