on master help sign in
add CI/CD
6e30317Hugh JF Chen
DevOps/common/common.shnew file+144
@@ -0,0 +1,144 @@
1+#!/usr/bin/env bash
2+set -Eeuo pipefail
3+
4+guard_bash_error () {
5+ set -Eeuo pipefail
6+}
7+
8+# Log levels
9+INFO=0
10+WARN=1
11+ERROR=2
12+FATAL=3
13+DEBUG=4
14+DEFAULT_LOG_LEVEL=${ERROR}
15+
16+my_exit () {
17+ echo "EXIT: - [HOST:$(hostname)]: - $(date +"%Y-%m-%d %H:%M:%S") - $1"
18+ exit "$2"
19+}
20+
21+msg () {
22+ if [ $1 -le ${DEFAULT_LOG_LEVEL} ]; then
23+ echo "[HOST:$(hostname)]: - $(date +"%Y-%m-%d %H:%M:%S") - $2"
24+ fi
25+}
26+
27+info () {
28+ msg ${INFO} "INFO: - $1"
29+}
30+
31+warn () {
32+ msg ${WARN} "WARNING: - $1"
33+}
34+
35+error () {
36+ msg ${ERROR} "ERROR: - $1"
37+}
38+
39+fatal () {
40+ msg ${FATAL} "FATAL: - $1"
41+}
42+
43+debug () {
44+ msg ${DEBUG} "DEBUG: - $1"
45+}
46+
47+begin_banner () {
48+ info "$1 - $2 phase - begin"
49+}
50+
51+done_banner () {
52+ info "$1 - $2 phase - done"
53+}
54+
55+### turn path within script into absolute path
56+### must pass the calling string of the script as the first parameter
57+### e.g., ./path_to_script/script.sh
58+### or, /root/path_to_script/script.sh
59+### return the absolute path to the script with "echo" command
60+turn_to_absolute_path () {
61+ local SCRIPT_ABS_PATH_RAW="$(dirname "$1")"
62+ # turn SCRIPT_ABS_PATH into absolute path
63+ case ${SCRIPT_ABS_PATH_RAW} in
64+ /*) echo "${SCRIPT_ABS_PATH_RAW}" ;;
65+ \.\.*) echo "$PWD/${SCRIPT_ABS_PATH_RAW}" ;;
66+ \.*) echo "$PWD/${SCRIPT_ABS_PATH_RAW}" ;;
67+ *) echo "$PWD" ;;
68+ esac
69+}
70+
71+### change CD to up to the project root directory
72+### must pass the absolute path to the script as the first parameter
73+change_CD_to_project_root () {
74+ cd "$1"
75+ local up_level=..
76+ local my_loop=10 # guard not to loop forever
77+ until ls "${up_level}"|grep -w DevOps > /dev/null 2>&1 && [ ${my_loop} -gt 0 ]
78+ do
79+ up_level=${up_level}/..
80+ my_loop=$(expr ${my_loop} - 1)
81+ done
82+ if [ ${my_loop} -eq 0 ]; then
83+ my_exit "Too many level up within the searching for DevOps directory,abort." 1
84+ fi
85+ cd "$1/${up_level}"
86+}
87+
88+### check OS and distribution
89+### return the OS distribution and ID with "echo" command
90+check_dist_or_OS () {
91+ local MY_THE_DISTRIBUTION_ID=""
92+ local MY_THE_DISTRIBUTION_VERSION=""
93+ if [ -e /etc/os-release ]; then
94+ MY_THE_DISTRIBUTION_ID=$(grep -w "ID" /etc/os-release |awk -F"=" '{print $NF}'|sed 's/"//g')
95+ MY_THE_DISTRIBUTION_VERSION=$(grep -w "VERSION_ID" /etc/os-release |awk -F"=" '{print $NF}'|awk -F"." '{print $1}'|sed 's/"//g')
96+ echo "${MY_THE_DISTRIBUTION_ID} ${MY_THE_DISTRIBUTION_VERSION}"
97+ else if type uname > /dev/null 2>&1; then
98+ MY_THE_DISTRIBUTION_ID=$(uname -s)
99+ MY_THE_DISTRIBUTION_VERSION=$(uname -r)
100+ echo "${MY_THE_DISTRIBUTION_ID} ${MY_THE_DISTRIBUTION_VERSION}"
101+ else
102+ echo ""
103+ fi
104+ fi
105+}
106+
107+### guard that the caller of the script must be root or has sudo right
108+guard_root_or_sudo () {
109+ if [[ $EUID > 0 ]] && ! sudo -v >/dev/null 2>&1; then
110+ return 1
111+ else
112+ return 0
113+ fi
114+}
115+
116+### init script with check if root or sudo
117+init_with_root_or_sudo () {
118+ guard_bash_error
119+
120+ if ! guard_root_or_sudo; then
121+ my_exit "You must be root or you must be sudoer to prepare the env for CI/CD." 1
122+ fi
123+
124+ SCRIPT_ABS_PATH=$(turn_to_absolute_path $0)
125+
126+ change_CD_to_project_root ${SCRIPT_ABS_PATH}
127+
128+ THE_DISTRIBUTION_ID_VERSION=$(check_dist_or_OS)
129+ THE_DISTRIBUTION_ID=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $1}')
130+ THE_DISTRIBUTION_VERSION=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $2}')
131+}
132+
133+### init script without check if root or sudo
134+init_without_root_or_sudo () {
135+ guard_bash_error
136+
137+ SCRIPT_ABS_PATH=$(turn_to_absolute_path $0)
138+
139+ change_CD_to_project_root ${SCRIPT_ABS_PATH}
140+
141+ THE_DISTRIBUTION_ID_VERSION=$(check_dist_or_OS)
142+ THE_DISTRIBUTION_ID=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $1}')
143+ THE_DISTRIBUTION_VERSION=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $2}')
144+}
DevOps/local/test/build/build.shnew file+18
@@ -0,0 +1,18 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "build build"
12+
13+#set +u to temp work around the nix script
14+set +u
15+[[ -e $HOME/.nix-profile/etc/profile.d/nix.sh ]] && . $HOME/.nix-profile/etc/profile.d/nix.sh
16+set -u
17+
18+done_banner "Top level" "build build"
DevOps/local/test/build/finishing.shnew file+14
@@ -0,0 +1,14 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "Top level" "build finishing"
13+
14+done_banner "Top level" "build finishing"
DevOps/local/test/build/nix/TCache.nixnew file+23
@@ -0,0 +1,23 @@
1+{ mkDerivation, base, bytestring, containers, directory, fetchgit
2+, hashtables, hpack, mtl, old-time, RefSerialize, stdenv, stm, text
3+}:
4+mkDerivation {
5+ pname = "TCache";
6+ version = "0.13.0.0";
7+ src = fetchgit {
8+ url = "https://github.com/hughjfchen/TCache";
9+ sha256 = "03c7g726n1hwhf7kn07j22p4w7gac1kkhnijplhs6nq64g1cwjwp";
10+ rev = "7f5258a501c844195bf18ae2f263ee795bcaf894";
11+ fetchSubmodules = true;
12+ };
13+ libraryHaskellDepends = [
14+ base bytestring containers directory hashtables mtl old-time
15+ RefSerialize stm text
16+ ];
17+ libraryToolDepends = [ hpack ];
18+ doCheck = false;
19+ preConfigure = "hpack";
20+ homepage = "https://github.com/agocorona/TCache#readme";
21+ description = "A Transactional cache with user-defined persistence";
22+ license = stdenv.lib.licenses.bsd3;
23+}
DevOps/local/test/build/nix/aeson-injector.nixnew file+21
@@ -0,0 +1,21 @@
1+{ mkDerivation, aeson, base, bifunctors, containers, deepseq
2+, hashable, HUnit, lens, QuickCheck, quickcheck-text, scientific
3+, servant-docs, stdenv, swagger2, tasty, tasty-hunit
4+, tasty-quickcheck, text, unordered-containers, vector
5+}:
6+mkDerivation {
7+ pname = "aeson-injector";
8+ version = "1.1.2.0";
9+ sha256 = "a4b53c8715e71dd8987e5500b98508497fa8c2ab8573418948f8f0694d33a014";
10+ libraryHaskellDepends = [
11+ aeson base bifunctors deepseq hashable lens servant-docs swagger2
12+ text unordered-containers
13+ ];
14+ testHaskellDepends = [
15+ aeson base containers HUnit lens QuickCheck quickcheck-text
16+ scientific swagger2 tasty tasty-hunit tasty-quickcheck text vector
17+ ];
18+ doCheck = false;
19+ description = "Injecting fields into aeson values";
20+ license = stdenv.lib.licenses.mit;
21+}
DevOps/local/test/build/nix/default.nixnew file+65
@@ -0,0 +1,65 @@
1+{ compiler ? "ghc865" }:
2+
3+let
4+ config = {
5+ packageOverrides = pkgs: rec {
6+ haskell = pkgs.haskell // {
7+ packages = pkgs.haskell.packages // {
8+ "${compiler}" = pkgs.haskell.packages."${compiler}".override {
9+ overrides = haskellPackagesNew: haskellPackagesOld: rec {
10+
11+ net-mqtt =
12+ haskellPackagesNew.callPackage ./nix/net-mqtt.nix { };
13+
14+ ptm-common =
15+ haskellPackagesNew.callPackage ./common/common.nix { };
16+
17+ ptm-core =
18+ haskellPackagesNew.callPackage ./core/core.nix { };
19+
20+ ptm-api =
21+ haskellPackagesNew.callPackage ./API/api.nix { };
22+
23+ transient =
24+ haskellPackagesNew.callPackage ./nix/transient.nix { };
25+
26+ TCache =
27+ haskellPackagesNew.callPackage ./nix/TCache.nix { };
28+
29+ transient-universe =
30+ haskellPackagesNew.callPackage ./nix/transient-universe.nix { };
31+
32+ servant-auth-token =
33+ haskellPackagesNew.callPackage ./nix/servant-auth-token.nix { };
34+
35+ aeson-injector =
36+ haskellPackagesNew.callPackage ./nix/aeson-injector.nix { };
37+
38+ servant-auth-token-api =
39+ haskellPackagesNew.callPackage ./nix/servant-auth-token-api.nix { };
40+
41+ servant-auth-token-persistent =
42+ haskellPackagesNew.callPackage ./nix/servant-auth-token-persistent.nix { };
43+
44+ };
45+ };
46+ };
47+ };
48+ };
49+ };
50+
51+ pkgs = import <nixpkgs> { inherit config; };
52+
53+in
54+ { ptm-api = pkgs.haskell.packages.${compiler}.ptm-api;
55+ ptm-core = pkgs.haskell.packages.${compiler}.ptm-core;
56+ ptm-common = pkgs.haskell.packages.${compiler}.ptm-common;
57+ net-mqtt = pkgs.haskell.packages.${compiler}.net-mqtt;
58+ transient-universe = pkgs.haskell.packages.${compiler}.transient-universe;
59+ transient = pkgs.haskell.packages.${compiler}.transient;
60+ TCache = pkgs.haskell.packages.${compiler}.TCache;
61+ servant-auth-token = pkgs.haskell.packages.${compiler}.servant-auth-token;
62+ servant-auth-token-api = pkgs.haskell.packages.${compiler}.servant-auth-token-api;
63+ servant-auth-token-persistent = pkgs.haskell.packages.${compiler}.servant-auth-token-persistent;
64+ aeson-injector = pkgs.haskell.packages.${compiler}.aeson-injector;
65+ }
DevOps/local/test/build/nix/net-mqtt.nixnew file+36
@@ -0,0 +1,36 @@
1+{ mkDerivation, async, attoparsec, base, binary, bytestring
2+, conduit, conduit-extra, containers, fetchgit, hpack, HUnit
3+, network-conduit-tls, network-uri, QuickCheck, stdenv, stm, tasty
4+, tasty-hunit, tasty-quickcheck, text
5+}:
6+mkDerivation {
7+ pname = "net-mqtt";
8+ version = "0.2.4.1";
9+ src = fetchgit {
10+ url = "https://github.com/dustin/mqtt-hs";
11+ sha256 = "1vvvf1ijg9v73rwxjyjbh7kxvravracbslzn0p9mg2sz17l3dy9r";
12+ rev = "26e7acc7b95fccf8723a83ecfd0bec9d5e697f79";
13+ fetchSubmodules = true;
14+ };
15+ isLibrary = true;
16+ isExecutable = true;
17+ libraryHaskellDepends = [
18+ async attoparsec base binary bytestring conduit conduit-extra
19+ containers network-conduit-tls network-uri stm text
20+ ];
21+ libraryToolDepends = [ hpack ];
22+ executableHaskellDepends = [
23+ async attoparsec base binary bytestring conduit conduit-extra
24+ containers network-conduit-tls network-uri stm text
25+ ];
26+ testHaskellDepends = [
27+ async attoparsec base binary bytestring conduit conduit-extra
28+ containers HUnit network-conduit-tls network-uri QuickCheck stm
29+ tasty tasty-hunit tasty-quickcheck text
30+ ];
31+ doCheck = false;
32+ prePatch = "hpack";
33+ homepage = "https://github.com/dustin/mqtt-hs#readme";
34+ description = "An MQTT Protocol Implementation";
35+ license = stdenv.lib.licenses.bsd3;
36+}
DevOps/local/test/build/nix/servant-auth-token-api.nixnew file+22
@@ -0,0 +1,22 @@
1+{ mkDerivation, aeson, aeson-injector, base, fetchgit, lens
2+, raw-strings-qq, servant, servant-docs, servant-swagger, stdenv
3+, swagger2, text
4+}:
5+mkDerivation {
6+ pname = "servant-auth-token-api";
7+ version = "0.5.3.0";
8+ src = fetchgit {
9+ url = "https://github.com/hughjfchen/servant-auth-token-api";
10+ sha256 = "1wmf4x663vkjsdhgamh2src9rhc1lsgd16rf2nz9r79nc9pb0ykr";
11+ rev = "9f4647e70d55b0789c8da52863d44bd785252c41";
12+ fetchSubmodules = true;
13+ };
14+ libraryHaskellDepends = [
15+ aeson aeson-injector base lens raw-strings-qq servant servant-docs
16+ servant-swagger swagger2 text
17+ ];
18+ doCheck = false;
19+ homepage = "https://github.com/ncrashed/servant-auth-token-api#readme";
20+ description = "Servant based API for token based authorisation";
21+ license = stdenv.lib.licenses.bsd3;
22+}
DevOps/local/test/build/nix/servant-auth-token-persistent.nixnew file+25
@@ -0,0 +1,25 @@
1+{ mkDerivation, aeson-injector, base, bytestring, containers
2+, exceptions, fetchgit, mtl, persistent, persistent-template
3+, servant-auth-token, servant-auth-token-api, servant-server
4+, stdenv, text, time, transformers, unliftio-core, uuid
5+}:
6+mkDerivation {
7+ pname = "servant-auth-token-persistent";
8+ version = "0.7.0.0";
9+ src = fetchgit {
10+ url = "https://github.com/hughjfchen/servant-auth-token";
11+ sha256 = "09qq03k1xcvm018a765r168n2vl29hl1ypm05s1500q9byab9hg0";
12+ rev = "2f8a7a505f475decb419b89fe5fbb8e5eeb361a5";
13+ fetchSubmodules = true;
14+ };
15+ postUnpack = "sourceRoot+=/servant-auth-token-persistent; echo source root reset to $sourceRoot";
16+ libraryHaskellDepends = [
17+ aeson-injector base bytestring containers exceptions mtl persistent
18+ persistent-template servant-auth-token servant-auth-token-api
19+ servant-server text time transformers unliftio-core uuid
20+ ];
21+ doCheck = false;
22+ homepage = "https://github.com/ncrashed/servant-auth-token#readme";
23+ description = "Persistent backend for servant-auth-token server";
24+ license = stdenv.lib.licenses.bsd3;
25+}
DevOps/local/test/build/nix/servant-auth-token.nixnew file+24
@@ -0,0 +1,24 @@
1+{ mkDerivation, aeson-injector, base, byteable, bytestring
2+, containers, fetchgit, http-api-data, mtl, pwstore-fast, servant
3+, servant-auth-token-api, servant-server, stdenv, text, time
4+, transformers, uuid, wai
5+}:
6+mkDerivation {
7+ pname = "servant-auth-token";
8+ version = "0.5.6.0";
9+ src = fetchgit {
10+ url = "https://github.com/hughjfchen/servant-auth-token";
11+ sha256 = "00xyc4zf37v7ypyrvy9a7pq0yl7nil8pjigcjv176vs6w79f063y";
12+ rev = "2e3577653f9646c1e5225cf7e1e4653721e2d3e0";
13+ fetchSubmodules = true;
14+ };
15+ libraryHaskellDepends = [
16+ aeson-injector base byteable bytestring containers http-api-data
17+ mtl pwstore-fast servant servant-auth-token-api servant-server text
18+ time transformers uuid wai
19+ ];
20+ doCheck = false;
21+ homepage = "https://github.com/ncrashed/servant-auth-token#readme";
22+ description = "Servant based API and server for token based authorisation";
23+ license = stdenv.lib.licenses.bsd3;
24+}
DevOps/local/test/build/nix/shell.nixnew file+1
@@ -0,0 +1 @@
1+(import ./default.nix {}).ptm-core.env
DevOps/local/test/build/nix/transient-universe.nixnew file+41
@@ -0,0 +1,41 @@
1+{ mkDerivation, aeson, base, bytestring, case-insensitive
2+, containers, directory, entropy, fetchgit, filepath, hashable
3+, HTTP, iproute, mtl, network, network-info, network-uri, primitive
4+, process, random, stdenv, stm, TCache, text, time, transformers
5+, transient, vector, websockets
6+}:
7+mkDerivation {
8+ pname = "transient-universe";
9+ version = "0.5.2";
10+ src = fetchgit {
11+ url = "https://github.com/hughjfchen/transient-universe";
12+ sha256 = "1l3rb0j82lgjfd974jba1iplbjxybxm0mr5l7s0f26awfjp0mbqa";
13+ rev = "f9a08d2d089af3e06a4772fcff83c9c35045f1a5";
14+ fetchSubmodules = true;
15+ };
16+ isLibrary = true;
17+ isExecutable = true;
18+ libraryHaskellDepends = [
19+ aeson base bytestring case-insensitive containers directory entropy
20+ filepath hashable HTTP iproute mtl network network-info network-uri
21+ primitive process random stm TCache text time transformers
22+ transient vector websockets
23+ ];
24+ executableHaskellDepends = [
25+ aeson base bytestring case-insensitive containers directory
26+ filepath hashable HTTP mtl network network-info network-uri process
27+ random stm TCache text time transformers transient vector
28+ websockets
29+ ];
30+ testHaskellDepends = [
31+ aeson base bytestring case-insensitive containers directory
32+ filepath hashable HTTP mtl network network-info network-uri process
33+ random stm TCache text time transformers transient vector
34+ websockets
35+ ];
36+ doHaddock = false;
37+ doCheck = false;
38+ homepage = "https://github.com/transient-haskell/transient-universe";
39+ description = "Remote execution and map-reduce: distributed computing for Transient";
40+ license = stdenv.lib.licenses.mit;
41+}
DevOps/local/test/build/nix/transient.nixnew file+26
@@ -0,0 +1,26 @@
1+{ mkDerivation, base, bytestring, containers, directory, fetchgit
2+, mtl, primitive, random, stdenv, stm, time, transformers
3+, type-level-sets
4+}:
5+mkDerivation {
6+ pname = "transient";
7+ version = "0.6.4";
8+ src = fetchgit {
9+ url = "https://github.com/hughjfchen/transient";
10+ sha256 = "0ir60mygkcd3dsr80mv7ivlqxbmdkad1n5gb7py9szmsz7y7qkwb";
11+ rev = "07c164458d99975fee0f808c77fef8cde0212d03";
12+ fetchSubmodules = true;
13+ };
14+ libraryHaskellDepends = [
15+ base bytestring containers directory mtl primitive random stm time
16+ transformers type-level-sets
17+ ];
18+ testHaskellDepends = [
19+ base bytestring containers directory mtl random stm time
20+ transformers
21+ ];
22+ doCheck = false;
23+ homepage = "https://github.com/transient-haskell/transient";
24+ description = "composing programs with multithreading, events and distributed computing";
25+ license = stdenv.lib.licenses.mit;
26+}
DevOps/local/test/build/prepare.shnew file+100
@@ -0,0 +1,100 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "Top level" "build prepare"
13+
14+get_last_stable_nix_channel () {
15+ local MY_CHANNEL_NAME_REGEX=""
16+ case ${THE_DISTRIBUTION_ID} in
17+ debian|rhel|centos) MY_CHANNEL_NAME_REGEX='s/.*\(nixos-[0-9][0-9].[0-9][0-9]\).*/\1/p' ;;
18+ Darwin) MY_CHANNEL_NAME_REGEX='s/.*\(nixpkgs-[0-9][0-9].[0-9][0-9]-darwin\).*/\1/p' ;;
19+ *) ;;
20+ esac
21+ local MY_LAST_NIX_STABLE_CHANNEL=$(git ls-remote --heads https://github.com/NixOS/nixpkgs-channels | awk '{print $NF}' | awk -F"/" '{print $NF}' | grep -v "\-unstable" | grep -v "\-small" | sed -n ${MY_CHANNEL_NAME_REGEX} | sort | tail -2 | head -1)
22+ echo ${MY_LAST_NIX_STABLE_CHANNEL}
23+}
24+
25+switch_to_last_stable_nix_channel () {
26+ nix-channel --remove nixpkgs
27+ nix-channel --add "https://nixos.org/channels/$(get_last_stable_nix_channel)" nixpkgs
28+ nix-channel --update
29+}
30+
31+set +u
32+[[ -e $HOME/.nix-profile/etc/profile.d/nix.sh ]] && . $HOME/.nix-profile/etc/profile.d/nix.sh
33+set -u
34+
35+if ! type nix-build >/dev/null 2>&1; then
36+ info "no nix-build found, trying to install it"
37+ case ${THE_DISTRIBUTION_ID} in
38+ debian)
39+ [[ -e /proc/sys/kernel/unprivileged_userns_clone ]] && sudo sysctl kernel.unprivileged_userns_clone=1
40+ curl https://nixos.org/nix/install | sh
41+ ;;
42+ Darwin)
43+ curl https://nixos.org/nix/install | sh
44+ ;;
45+ rhel|centos)
46+ curl https://nixos.org/releases/nix/nix-2.1.3/install | sh
47+ ;;
48+ *) ;;
49+ esac
50+ set +u
51+ . $HOME/.nix-profile/etc/profile.d/nix.sh
52+ set -u
53+ switch_to_last_stable_nix_channel
54+fi
55+
56+if ! type patchelf >/dev/null 2>&1; then
57+ info "no patchelf found, trying to install it"
58+ nix-env --install patchelf
59+fi
60+
61+if ! type cabal2nix >/dev/null 2>&1; then
62+ info "no cabal2nix found, trying to install it"
63+
64+ nix-env --install cabal2nix
65+fi
66+
67+if ! type nix-prefetch-git >/dev/null 2>&1; then
68+ info "no nix-prefetch-git found, trying to install it"
69+ nix-env --install nix-prefetch-git
70+fi
71+
72+if ! type cabal >/dev/null 2>&1; then
73+ info "no cabal-install found, trying to install it"
74+ nix-env --install cabal-install
75+fi
76+
77+if ! type nodejs >/dev/null 2>&1 && ! type node >/dev/null 2>&1; then
78+ info "no nodejs found, trying to install it"
79+ case ${THE_DISTRIBUTION_ID} in
80+ debian)
81+ curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
82+ sudo apt-get update
83+ sudo apt-get install -y nodejs
84+ ;;
85+ Darwin)
86+ if type brew > /dev/null 2>&1; then
87+ brew install node@10
88+ else
89+ curl "https://nodejs.org/dist/latest-v10.x/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest-v10.x/ | sed -nE 's|.*>node-(.*)\.pkg</a>.*|\1|p')}.pkg" > "$HOME/Downloads/node-latest-v10.x.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest-v10.x.pkg" -target "/"
90+ fi
91+ ;;
92+ rhel|centos)
93+ curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
94+ sudo yum install -y nodejs
95+ ;;
96+ *) ;;
97+ esac
98+fi
99+
100+done_banner "Top level" "build prepare"
DevOps/local/test/build/unbuild.shnew file+14
@@ -0,0 +1,14 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "Top level" "build unbuild"
13+
14+done_banner "Top level" "build unbuild"
DevOps/local/test/build/unfinishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "build unfinishing"
12+
13+done_banner "Top level" "build unfinishing"
DevOps/local/test/build/unprepare.shnew file+55
@@ -0,0 +1,55 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "Top level" "build unprepare"
13+
14+set +u
15+[[ -e $HOME/.nix-profile/etc/profile.d/nix.sh ]] && . $HOME/.nix-profile/etc/profile.d/nix.sh
16+set -u
17+
18+if type nix-build >/dev/null 2>&1; then
19+ info "nix-build found, trying to uninstall it"
20+ if [ "${THE_DISTRIBUTION_ID}" == "debian" ]; then
21+ [[ -e /proc/sys/kernel/unprivileged_userns_clone ]] && sudo sysctl kernel.unprivileged_userns_clone=1
22+ fi
23+ set +e
24+ sudo rm -fr /nix > /dev/null 2>&1
25+ set -e
26+ sudo rm -fr $HOME/.nix-channels
27+ sudo rm -fr $HOME/.nix-defexpr
28+ sudo rm -fr $HOME/.nix-profile
29+ [[ -f $HOME/.profile ]] && sed -i.nix.uninstall.bak '/.nix-profile/d' $HOME/.profile
30+ [[ -f $HOME/.bash_profile ]] && sed -i.nix.uninstall.bak '/.nix-profile/d' $HOME/.bash_profile
31+ [[ -f $HOME/.bashrc ]] && sed -i.nix.uninstall.bak '/.nix-profile/d' $HOME/.bashrc
32+fi
33+
34+if type nodejs >/dev/null 2>&1 || type node >/dev/null 2>&1; then
35+ info "nodejs found, trying to uninstall it"
36+ case ${THE_DISTRIBUTION_ID} in
37+ debian)
38+ sudo apt-get purge -y nodejs
39+ ;;
40+ Darwin)
41+ if type brew > /dev/null 2>&1; then
42+ brew uninstall node@10
43+ brew unlink node@10
44+ else
45+ info "Use your macOS finder to uninstall the nodejs package."
46+ fi
47+ ;;
48+ rhel|centos)
49+ sudo yum erase -y nodejs
50+ ;;
51+ *) ;;
52+ esac
53+fi
54+
55+done_banner "Top level" "build unprepare"
DevOps/local/test/cb-cd-ct.shnew file+63
@@ -0,0 +1,63 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. Build, Deploy and Test"
12+
13+warn "Nothing can be filled by default, you must build the top level CB-CD-CT pipeline yourself."
14+warn "Refer to the cb-cd-ct.sh for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/build/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unbuild.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/build.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/build/build.sh
31+#${SCRIPT_ABS_PATH}/build/finishing.sh
32+
33+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
34+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
35+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
36+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
37+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
38+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
39+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
40+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
41+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
42+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
43+
44+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
45+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
46+
47+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unfinishing.sh
48+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/untest.sh
49+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unprepare.sh
50+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
51+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
52+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
53+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/prepare.sh
54+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/test.sh
55+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/finishing.sh
56+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
57+
58+#${SCRIPT_ABS_PATH}/test/test.sh
59+#${SCRIPT_ABS_PATH}/test/finishing.sh
60+
61+#${SCRIPT_ABS_PATH}/finishing.sh
62+
63+done_banner "Top level" "Cont. Build, Deploy and Test"
DevOps/local/test/cb-cd.shnew file+49
@@ -0,0 +1,49 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. Build and Deploy"
12+
13+warn "Nothing can be filled by default, you must build the top level CB-CD pipeline yourself."
14+warn "Refer to the cb-cd.sh for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/build/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unbuild.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/build.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/build/build.sh
31+#${SCRIPT_ABS_PATH}/build/finishing.sh
32+
33+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
34+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
35+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
36+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
37+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
38+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
39+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
40+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
41+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
42+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
43+
44+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
45+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
46+
47+#${SCRIPT_ABS_PATH}/finishing.sh
48+
49+done_banner "Top level" "Cont. Build and Deploy"
DevOps/local/test/cb.shnew file+34
@@ -0,0 +1,34 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. Build"
12+
13+warn "Nothing can be filled by default, you must build the top level CB pipeline yourself."
14+warn "Refer to the cb.sh for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/build/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unbuild.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/build.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/build/build.sh
31+#${SCRIPT_ABS_PATH}/build/finishing.sh
32+#${SCRIPT_ABS_PATH}/finishing.sh
33+
34+done_banner "Top level" "Cont. Build"
DevOps/local/test/cd-ct.shnew file+49
@@ -0,0 +1,49 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. Deploy and Test"
12+
13+warn "Nothing can be filled by default, you must build the top level CD-CT pipeline yourself."
14+warn "Refer to the cd-ct.sh for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/deploy/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
31+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
32+
33+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unfinishing.sh
34+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/untest.sh
35+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unprepare.sh
36+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
37+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
38+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
39+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/prepare.sh
40+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/test.sh
41+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/finishing.sh
42+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
43+
44+#${SCRIPT_ABS_PATH}/test/test.sh
45+#${SCRIPT_ABS_PATH}/test/finishing.sh
46+
47+#${SCRIPT_ABS_PATH}/finishing.sh
48+
49+done_banner "Top level" "Cont. Deploy and Test"
DevOps/local/test/cd.shnew file+34
@@ -0,0 +1,34 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. Deploy"
12+
13+warn "Nothing can be filled by default, you must build the top level CD pipeline yourself."
14+warn "Refer to the cd.sh for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/deploy/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
31+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
32+#${SCRIPT_ABS_PATH}/finishing.sh
33+
34+done_banner "Top level" "Cont. Deploy"
DevOps/local/test/ct.shnew file+34
@@ -0,0 +1,34 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. Test"
12+
13+warn "Nothing can be filled by default, you must build the top level CT pipeline yourself."
14+warn "Refer to the ct.sh for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/test/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/untest.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/test.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/test/test.sh
31+#${SCRIPT_ABS_PATH}/test/finishing.sh
32+#${SCRIPT_ABS_PATH}/finishing.sh
33+
34+done_banner "Top level" "Cont. Test"
DevOps/local/test/deploy/deploy.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "deploy deploy"
12+
13+done_banner "Top level" "deploy deploy"
DevOps/local/test/deploy/finishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "deploy finishing"
12+
13+done_banner "Top level" "deploy finishing"
DevOps/local/test/deploy/prepare.shnew file+85
@@ -0,0 +1,85 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "deploy prepare"
12+
13+if ! type docker >/dev/null 2>&1; then
14+ info "no docker found, trying to install it"
15+ case ${THE_DISTRIBUTION_ID} in
16+ rhel) my_exit "Don't know how to install docker-ce on RHEL, will abort." 1
17+ ;;
18+ debian) THE_DISTRIBUTION_VERSION_CODENAME=$(grep -w "VERSION_CODENAME" /etc/os-release |awk -F"=" '{print $NF}'|sed 's/"//g')
19+ my_arch=$(uname -m)
20+ if [ ${my_arch} = "aarch64" ]; then
21+ docker_arm="arm64"
22+ else
23+ docker_arm="amd64"
24+ fi
25+ if dpkg-query -l | grep docker.io ; then
26+ sudo apt-get purge -y docker.io
27+ fi
28+ if dpkg-query -l | grep docker-engine ; then
29+ sudo apt-get purge -y docker-engine
30+ fi
31+ if dpkg-query -l | grep docker ; then
32+ sudo apt-get purge -y docker
33+ fi
34+ if dpkg-query -l | grep runc ; then
35+ sudo apt-get purge -y runc
36+ fi
37+ sudo apt-get update
38+ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
39+ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
40+ sudo add-apt-repository "deb [arch=${docker_arm}] https://download.docker.com/linux/debian ${THE_DISTRIBUTION_VERSION_CODENAME} stable"
41+ sudo apt-get update
42+ sudo apt-get install -y docker-ce docker-ce-cli containerd.io
43+ sudo /usr/sbin/usermod -a -G docker $(whoami)
44+ ;;
45+ centos) sudo yum install -y yum-utils device-mapper-persistent-data lvm2
46+ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
47+ sudo yum install -y docker-ce docker-ce-cli containerd.io
48+ sudo systemctl enable docker
49+ sudo systemctl start docker
50+ sudo /usr/sbin/usermod -a -G docker $(whoami)
51+ ;;
52+ Darwin) if type brew > /dev/null 2>&1; then
53+ brew cask install docker
54+ else
55+ #wget -c https://download.docker.com/mac/stable/Docker.dmg
56+ warn "Cannot install docker desktop for MacOS automatically without homebrew,"
57+ warn "please go to following web page to download and isntall the package."
58+ warn "https://hub.docker.com/?overlay=onboarding"
59+ fi
60+ ;;
61+ *) my_exit "Not supported distribution OS" 1
62+ ;;
63+ esac
64+fi
65+
66+if ! type docker-compose >/dev/null 2>&1; then
67+ info "no docker-compose found, trying to install it"
68+ case ${THE_DISTRIBUTION_ID} in
69+ rhel) my_exit "docker-compose depends on docker, yet don't know how to install docker-ce on RHEL, so abord." 1
70+ ;;
71+ debian) sudo apt-get update
72+ sudo apt-get install -y docker-compose
73+ ;;
74+ centos) sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
75+ sudo chmod +x /usr/local/bin/docker-compose
76+ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
77+ ;;
78+ Darwin) info "docker-compose will installed with docker desktop for macos. skip."
79+ ;;
80+ *) my_exit "Not supported distribution OS" 1
81+ ;;
82+ esac
83+fi
84+
85+done_banner "Top level" "deploy prepare"
DevOps/local/test/deploy/undeploy.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "deploy undeploy"
12+
13+done_banner "Top level" "deploy undeploy"
DevOps/local/test/deploy/unfinishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "deploy unfinishing"
12+
13+done_banner "Top level" "deploy unfinishing"
DevOps/local/test/deploy/unprepare.shnew file+59
@@ -0,0 +1,59 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "Top level" "deploy unprepare"
13+
14+if type docker >/dev/null 2>&1; then
15+ info "docker found, trying to uninstall it"
16+ case ${THE_DISTRIBUTION_ID} in
17+ rhel) info "This script not know how to install docker-ce on RHEL, so that docker cna't be installed by this script. Ignore."
18+ ;;
19+ debian) my_arch=$(uname -m)
20+ if [ ${my_arch} = "aarch64" ]; then
21+ docker_arm="arm64"
22+ else
23+ docker_arm="amd64"
24+ fi
25+ sudo apt-get purge -y docker-ce docker-ce-cli containerd.io
26+ ;;
27+ centos) sudo yum erase -y docker-ce docker-ce-cli containerd.io
28+ ;;
29+ Darwin) if type brew > /dev/null 2>&1; then
30+ brew cask uninstall docker
31+ brew cask unlink docker
32+ else
33+ info "Don't know how to uninstall the docker desktop for macOS package."
34+ info "please refer to the installation web page for uninstallation instructions."
35+ fi
36+ ;;
37+ *) warn "Not supported distribution OS."
38+ ;;
39+ esac
40+fi
41+
42+if type docker-compose >/dev/null 2>&1; then
43+ info "docker-compose found, trying to uninstall it"
44+ case ${THE_DISTRIBUTION_ID} in
45+ rhel) info "This script not know how to install docker-compose on RHEL, so that docker-compose cna't be installed by this script. Ignore."
46+ ;;
47+ debian) sudo apt-get purge -y docker-compose
48+ ;;
49+ centos) [[ -e /usr/local/bin/docker-compose ]] && sudo rm /usr/local/bin/docker-compose
50+ [[ -L /usr/bin/docker-compose ]] && sudo rm /usr/bin/docker-compose
51+ ;;
52+ Darwin) info "docker-compose will be uninstalled with docker for desktop package. skip."
53+ ;;
54+ *) warn "Not supported distribution OS"
55+ ;;
56+ esac
57+fi
58+
59+done_banner "Top level" "deploy unprepare"
DevOps/local/test/finishing.shnew file+32
@@ -0,0 +1,32 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "finishing"
12+
13+case ${THE_DISTRIBUTION_ID} in
14+ rhel) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
15+ my_exit "This CI/CD script only supports RHEL 7.x, will abort." 1
16+ fi
17+ ;;
18+ debian) if [ "${THE_DISTRIBUTION_VERSION}" != "9" ] && [ "${THE_DISTRIBUTION_VERSION}" != "10" ]; then
19+ my_exit "This CI/CD script only supports debian 9.x and 10.x, will abort" 1
20+ fi
21+ ;;
22+ centos) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
23+ my_exit "This CI/CD script only support Centos 7.x, will abort" 1
24+ fi
25+ ;;
26+ Darwin) info "Please note that MacOS ony support as a development environment."
27+ ;;
28+ *) my_exit "Unsupported linux distribution, will abort" 1
29+ ;;
30+esac
31+
32+done_banner "Top level" "finishing"
DevOps/local/test/prepare.shnew file+35
@@ -0,0 +1,35 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "Top level" "prepare"
13+
14+case ${THE_DISTRIBUTION_ID} in
15+ rhel) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
16+ my_exit "This CI/CD script only supports RHEL 7.x, will abort." 1
17+ fi
18+ ;;
19+ debian) if [ "${THE_DISTRIBUTION_VERSION}" != "9" ] && [ "${THE_DISTRIBUTION_VERSION}" != "10" ]; then
20+ my_exit "This CI/CD script only supports debian 9.x and 10.x, will abort" 1
21+ fi
22+ ;;
23+ centos) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
24+ my_exit "This CI/CD script only support Centos 7.x, will abort" 1
25+ fi
26+ ;;
27+ Darwin) warn "Please note that MacOS only use as a development environment."
28+ ;;
29+ *) my_exit "Unsupported linux distribution, will abort" 1
30+ ;;
31+esac
32+
33+done_banner "Top level" "prepare"
34+
35+# for development env, git should had already be installed.
DevOps/local/test/test/finishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "test finishing"
12+
13+done_banner "Top level" "test finishing"
DevOps/local/test/test/prepare.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "test prepare"
12+
13+done_banner "Top level" "test prepare"
DevOps/local/test/test/test.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "test test"
12+
13+done_banner "Top level" "test test"
DevOps/local/test/test/unfinishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "test unfinishing"
12+
13+done_banner "Top level" "test unfinishing"
DevOps/local/test/test/unprepare.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "test unprepare"
12+
13+done_banner "Top level" "test unprepare"
DevOps/local/test/test/untest.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "test untest"
12+
13+done_banner "Top level" "test untest"
DevOps/local/test/uncb-uncd-unct.shnew file+63
@@ -0,0 +1,63 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. UnBuild, UnDeploy and UnTest"
12+
13+warn "Nothing can be filled by default, you must build the top level UnCB-UnCD-UnCT pipeline yourself."
14+warn "Refer to the uncb-uncd-unct.sh of some specific sub project for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/build/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unbuild.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/build.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/build/build.sh
31+#${SCRIPT_ABS_PATH}/build/finishing.sh
32+
33+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
34+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
35+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
36+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
37+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
38+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
39+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
40+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
41+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
42+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
43+
44+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
45+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
46+
47+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unfinishing.sh
48+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/untest.sh
49+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unprepare.sh
50+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
51+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
52+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
53+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/prepare.sh
54+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/test.sh
55+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/finishing.sh
56+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
57+
58+#${SCRIPT_ABS_PATH}/test/test.sh
59+#${SCRIPT_ABS_PATH}/test/finishing.sh
60+
61+#${SCRIPT_ABS_PATH}/finishing.sh
62+
63+done_banner "Top level" "Cont. UnBuild, UnDeploy and UnTest"
DevOps/local/test/uncb-uncd.shnew file+49
@@ -0,0 +1,49 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. UnBuild and UnDeploy"
12+
13+warn "Nothing can be filled by default, you must build the top level UnCB-UnCD pipeline yourself."
14+warn "Refer to the uncb-uncd.sh of some specific sub project for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/build/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unbuild.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/build.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/build/build.sh
31+#${SCRIPT_ABS_PATH}/build/finishing.sh
32+
33+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
34+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
35+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
36+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
37+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
38+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
39+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
40+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
41+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
42+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
43+
44+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
45+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
46+
47+#${SCRIPT_ABS_PATH}/finishing.sh
48+
49+done_banner "Top level" "Cont. UnBuild and UnDeploy"
DevOps/local/test/uncb.shnew file+34
@@ -0,0 +1,34 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. UnBuild"
12+
13+warn "Nothing can be filled by default, you must build the top level UNCB pipeline yourself."
14+warn "Refer to the uncb.sh under some specific sub project for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/build/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unbuild.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/build.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/build/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/build/build.sh
31+#${SCRIPT_ABS_PATH}/build/finishing.sh
32+#${SCRIPT_ABS_PATH}/finishing.sh
33+
34+done_banner "Top level" "Cont. UnBuild"
DevOps/local/test/uncd-unct.shnew file+49
@@ -0,0 +1,49 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. UnDeploy and UnTest"
12+
13+warn "Nothing can be filled by default, you must build the top level UnCD-UnCT pipeline yourself."
14+warn "Refer to the cd-ct.sh of some specific sub project for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/deploy/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
31+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
32+
33+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unfinishing.sh
34+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/untest.sh
35+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unprepare.sh
36+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
37+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
38+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
39+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/prepare.sh
40+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/test.sh
41+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/finishing.sh
42+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
43+
44+#${SCRIPT_ABS_PATH}/test/test.sh
45+#${SCRIPT_ABS_PATH}/test/finishing.sh
46+
47+#${SCRIPT_ABS_PATH}/finishing.sh
48+
49+done_banner "Top level" "Cont. UnDeploy and UnTest"
DevOps/local/test/uncd.shnew file+34
@@ -0,0 +1,34 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. UnDeploy"
12+
13+warn "Nothing can be filled by default, you must build the top level UnCD pipeline yourself."
14+warn "Refer to the uncd.sh of some specific sub project for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/deploy/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/undeploy.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/deploy.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/deploy/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/deploy/deploy.sh
31+#${SCRIPT_ABS_PATH}/deploy/finishing.sh
32+#${SCRIPT_ABS_PATH}/finishing.sh
33+
34+done_banner "Top level" "Cont. UnDeploy"
DevOps/local/test/unct.shnew file+34
@@ -0,0 +1,34 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "Cont. UnTest"
12+
13+warn "Nothing can be filled by default, you must build the top level UnCT pipeline yourself."
14+warn "Refer to the unct.sh of some specific sub project for some example"
15+
16+#${SCRIPT_ABS_PATH}/prepare.sh
17+#${SCRIPT_ABS_PATH}/test/prepare.sh
18+
19+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unfinishing.sh
20+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/untest.sh
21+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/unprepare.sh
22+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unfinishing.sh
23+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/unprepare.sh
24+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/prepare.sh
25+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/prepare.sh
26+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/test.sh
27+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/test/finishing.sh
28+#${SCRIPT_ABS_PATH}/../../../MY_SUB_PROJECT_NAME/DevOps/MY_LOCATION_NAME/MY_PHASE_NAME/finishing.sh
29+
30+#${SCRIPT_ABS_PATH}/test/test.sh
31+#${SCRIPT_ABS_PATH}/test/finishing.sh
32+#${SCRIPT_ABS_PATH}/finishing.sh
33+
34+done_banner "Top level" "Cont. UnTest"
DevOps/local/test/unfinishing.shnew file+33
@@ -0,0 +1,33 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "Top level" "unfinishing"
13+
14+case ${THE_DISTRIBUTION_ID} in
15+ rhel) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
16+ my_exit "This CI/CD script only supports RHEL 7.x, will abort." 1
17+ fi
18+ ;;
19+ debian) if [ "${THE_DISTRIBUTION_VERSION}" != "9" ] && [ "${THE_DISTRIBUTION_VERSION}" != "10" ]; then
20+ my_exit "This CI/CD script only supports debian 9.x and 10.x, will abort" 1
21+ fi
22+ ;;
23+ centos) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
24+ my_exit "This CI/CD script only support Centos 7.x, will abort" 1
25+ fi
26+ ;;
27+ Darwin) info "Please note that MacOS only support as a development environment."
28+ ;;
29+ *) my_exit "Unsupported linux distribution, will abort" 1
30+ ;;
31+esac
32+
33+done_banner "Top level" "unfinishing"
DevOps/local/test/unprepare.shnew file+32
@@ -0,0 +1,32 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "Top level" "unprepare"
12+
13+case ${THE_DISTRIBUTION_ID} in
14+ rhel) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
15+ my_exit "This CI/CD script only supports RHEL 7.x, will abort." 1
16+ fi
17+ ;;
18+ debian) if [ "${THE_DISTRIBUTION_VERSION}" != "9" ] && [ "${THE_DISTRIBUTION_VERSION}" != "10" ]; then
19+ my_exit "This CI/CD script only supports debian 9.x and 10.x, will abort" 1
20+ fi
21+ ;;
22+ centos) if [ "${THE_DISTRIBUTION_VERSION}" != "7" ]; then
23+ my_exit "This CI/CD script only support Centos 7.x, will abort" 1
24+ fi
25+ ;;
26+ Darwin) info "Please note that MacOS only support as a develoment environment."
27+ ;;
28+ *) my_exit "Unsupported linux distribution, will abort" 1
29+ ;;
30+esac
31+
32+done_banner "Top level" "unprepare"
ci/DevOps/common/common.shnew file+144
@@ -0,0 +1,144 @@
1+#!/usr/bin/env bash
2+set -Eeuo pipefail
3+
4+guard_bash_error () {
5+ set -Eeuo pipefail
6+}
7+
8+# Log levels
9+INFO=0
10+WARN=1
11+ERROR=2
12+FATAL=3
13+DEBUG=4
14+DEFAULT_LOG_LEVEL=${ERROR}
15+
16+my_exit () {
17+ echo "EXIT: - [HOST:$(hostname)]: - $(date +"%Y-%m-%d %H:%M:%S") - $1"
18+ exit "$2"
19+}
20+
21+msg () {
22+ if [ $1 -le ${DEFAULT_LOG_LEVEL} ]; then
23+ echo "[HOST:$(hostname)]: - $(date +"%Y-%m-%d %H:%M:%S") - $2"
24+ fi
25+}
26+
27+info () {
28+ msg ${INFO} "INFO: - $1"
29+}
30+
31+warn () {
32+ msg ${WARN} "WARNING: - $1"
33+}
34+
35+error () {
36+ msg ${ERROR} "ERROR: - $1"
37+}
38+
39+fatal () {
40+ msg ${FATAL} "FATAL: - $1"
41+}
42+
43+debug () {
44+ msg ${DEBUG} "DEBUG: - $1"
45+}
46+
47+begin_banner () {
48+ info "$1 - $2 phase - begin"
49+}
50+
51+done_banner () {
52+ info "$1 - $2 phase - done"
53+}
54+
55+### turn path within script into absolute path
56+### must pass the calling string of the script as the first parameter
57+### e.g., ./path_to_script/script.sh
58+### or, /root/path_to_script/script.sh
59+### return the absolute path to the script with "echo" command
60+turn_to_absolute_path () {
61+ local SCRIPT_ABS_PATH_RAW="$(dirname "$1")"
62+ # turn SCRIPT_ABS_PATH into absolute path
63+ case ${SCRIPT_ABS_PATH_RAW} in
64+ /*) echo "${SCRIPT_ABS_PATH_RAW}" ;;
65+ \.\.*) echo "$PWD/${SCRIPT_ABS_PATH_RAW}" ;;
66+ \.*) echo "$PWD/${SCRIPT_ABS_PATH_RAW}" ;;
67+ *) echo "$PWD" ;;
68+ esac
69+}
70+
71+### change CD to up to the project root directory
72+### must pass the absolute path to the script as the first parameter
73+change_CD_to_project_root () {
74+ cd "$1"
75+ local up_level=..
76+ local my_loop=10 # guard not to loop forever
77+ until ls "${up_level}"|grep -w DevOps > /dev/null 2>&1 && [ ${my_loop} -gt 0 ]
78+ do
79+ up_level=${up_level}/..
80+ my_loop=$(expr ${my_loop} - 1)
81+ done
82+ if [ ${my_loop} -eq 0 ]; then
83+ my_exit "Too many level up within the searching for DevOps directory,abort." 1
84+ fi
85+ cd "$1/${up_level}"
86+}
87+
88+### check OS and distribution
89+### return the OS distribution and ID with "echo" command
90+check_dist_or_OS () {
91+ local MY_THE_DISTRIBUTION_ID=""
92+ local MY_THE_DISTRIBUTION_VERSION=""
93+ if [ -e /etc/os-release ]; then
94+ MY_THE_DISTRIBUTION_ID=$(grep -w "ID" /etc/os-release |awk -F"=" '{print $NF}'|sed 's/"//g')
95+ MY_THE_DISTRIBUTION_VERSION=$(grep -w "VERSION_ID" /etc/os-release |awk -F"=" '{print $NF}'|awk -F"." '{print $1}'|sed 's/"//g')
96+ echo "${MY_THE_DISTRIBUTION_ID} ${MY_THE_DISTRIBUTION_VERSION}"
97+ else if type uname > /dev/null 2>&1; then
98+ MY_THE_DISTRIBUTION_ID=$(uname -s)
99+ MY_THE_DISTRIBUTION_VERSION=$(uname -r)
100+ echo "${MY_THE_DISTRIBUTION_ID} ${MY_THE_DISTRIBUTION_VERSION}"
101+ else
102+ echo ""
103+ fi
104+ fi
105+}
106+
107+### guard that the caller of the script must be root or has sudo right
108+guard_root_or_sudo () {
109+ if [[ $EUID > 0 ]] && ! sudo -v >/dev/null 2>&1; then
110+ return 1
111+ else
112+ return 0
113+ fi
114+}
115+
116+### init script with check if root or sudo
117+init_with_root_or_sudo () {
118+ guard_bash_error
119+
120+ if ! guard_root_or_sudo; then
121+ my_exit "You must be root or you must be sudoer to prepare the env for CI/CD." 1
122+ fi
123+
124+ SCRIPT_ABS_PATH=$(turn_to_absolute_path $0)
125+
126+ change_CD_to_project_root ${SCRIPT_ABS_PATH}
127+
128+ THE_DISTRIBUTION_ID_VERSION=$(check_dist_or_OS)
129+ THE_DISTRIBUTION_ID=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $1}')
130+ THE_DISTRIBUTION_VERSION=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $2}')
131+}
132+
133+### init script without check if root or sudo
134+init_without_root_or_sudo () {
135+ guard_bash_error
136+
137+ SCRIPT_ABS_PATH=$(turn_to_absolute_path $0)
138+
139+ change_CD_to_project_root ${SCRIPT_ABS_PATH}
140+
141+ THE_DISTRIBUTION_ID_VERSION=$(check_dist_or_OS)
142+ THE_DISTRIBUTION_ID=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $1}')
143+ THE_DISTRIBUTION_VERSION=$(echo ${THE_DISTRIBUTION_ID_VERSION}|awk '{print $2}')
144+}
ci/DevOps/local/test/build/build.shnew file+30
@@ -0,0 +1,30 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "build build"
12+
13+#set +u to workaround the nix script temperlately.
14+set +u
15+. $HOME/.nix-profile/etc/profile.d/nix.sh
16+set -u
17+
18+if [ -f ${SCRIPT_ABS_PATH}/nix/project-m36.nix ]; then
19+ if [ -e ${SCRIPT_ABS_PATH}/../../dev ] && [ -e ${SCRIPT_ABS_PATH}/../../../local ]; then
20+ # for doom-emacs
21+ [ -x ~/.emacs.d/bin/doom ] && echo "((nil . ((dante-target . \"project-m36\"))))" > ${SCRIPT_ABS_PATH}/../../../../.dir-locals.el && nix-shell --run "~/.emacs.d/bin/doom env > /dev/null 2>&1" ${SCRIPT_ABS_PATH}/nix/shell.nix
22+ nix-shell ${SCRIPT_ABS_PATH}/nix/shell.nix
23+ else
24+ nix-build -A project-m36-docker ${SCRIPT_ABS_PATH}/nix/default.nix
25+ fi
26+else
27+ info "No ${SCRIPT_ABS_PATH}/nix/project-m36.nix found, skip building"
28+fi
29+
30+done_banner "project-m36" "build build"
ci/DevOps/local/test/build/finishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "build finishing"
12+
13+done_banner "project-m36" "build finishing"
ci/DevOps/local/test/build/nix/data-interval.nixnew file+19
@@ -0,0 +1,19 @@
1+{ mkDerivation, base, ChasingBottoms, containers, deepseq
2+, extended-reals, hashable, HUnit, lattices, QuickCheck, stdenv
3+, syb, tasty, tasty-hunit, tasty-quickcheck, tasty-th
4+}:
5+mkDerivation {
6+ pname = "data-interval";
7+ version = "2.0.1";
8+ sha256 = "5331e2df31eba3f5eb1d097a38fc5428dae56af0c0a7d71bd00491bcf81ee76f";
9+ libraryHaskellDepends = [
10+ base containers deepseq extended-reals hashable lattices
11+ ];
12+ testHaskellDepends = [
13+ base ChasingBottoms containers deepseq hashable HUnit lattices
14+ QuickCheck syb tasty tasty-hunit tasty-quickcheck tasty-th
15+ ];
16+ doCheck = false;
17+ description = "Interval datatype, interval arithmetic and interval-based containers";
18+ license = stdenv.lib.licenses.bsd3;
19+}
ci/DevOps/local/test/build/nix/default.nixnew file+109
@@ -0,0 +1,109 @@
1+{ compiler ? "ghc865" }:
2+
3+let
4+ config = {
5+ packageOverrides = pkgs: rec {
6+ haskell = pkgs.haskell // {
7+ packages = pkgs.haskell.packages // {
8+ "${compiler}" = pkgs.haskell.packages."${compiler}".override {
9+ overrides = haskellPackagesNew: haskellPackagesOld: rec {
10+
11+ /*primitive-unlifted =
12+ haskellPackagesNew.callPackage ./primitive-unlifted.nix { };*/
13+ distributed-process-extras =
14+ haskellPackagesNew.callPackage ./distributed-process-extras.nix { };
15+ distributed-process-client-server =
16+ haskellPackagesNew.callPackage ./distributed-process-client-server.nix { };
17+ distributed-process-async =
18+ haskellPackagesNew.callPackage ./distributed-process-async.nix { };
19+ rank1dynamic =
20+ haskellPackagesNew.callPackage ./rank1dynamic.nix { };
21+ distributed-static =
22+ haskellPackagesNew.callPackage ./distributed-static.nix { };
23+ distributed-process =
24+ haskellPackagesNew.callPackage ./distributed-process.nix { };
25+ stm-hamt =
26+ haskellPackagesNew.callPackage ./stm-hamt.nix { };
27+ stm-containers =
28+ haskellPackagesNew.callPackage ./stm-containers.nix { };
29+ network-transport-tcp =
30+ haskellPackagesNew.callPackage ./network-transport-tcp.nix { };
31+ data-interval =
32+ haskellPackagesNew.callPackage ./data-interval.nix { };
33+ project-m36 =
34+ haskellPackagesNew.callPackage ./project-m36.nix { };
35+ };
36+ };
37+ };
38+ };
39+ };
40+ };
41+
42+ pkgs = import <nixpkgs> { inherit config; };
43+
44+ inherit (pkgs) dockerTools stdenv buildEnv writeText;
45+
46+ project-m36 = pkgs.haskell.packages.${compiler}.project-m36;
47+
48+ static-project-m36 = pkgs.haskell.lib.justStaticExecutables pkgs.haskell.packages.${compiler}.project-m36;
49+
50+ passwd = ''
51+ root:x:0:0::/root:/run/current-system/sw/bin/bash
52+ project-m36:x:90001:90001::/var/empty:/run/current-system/sw/bin/nologin
53+ '';
54+
55+ group = ''
56+ root:x:0:
57+ nogroup:x:65534:
58+ project-m36:x:90001:project-m36
59+ '';
60+
61+ nsswitch = ''
62+ hosts: files dns myhostname mymachines
63+ '';
64+
65+ project-m36-conf = ''
66+ para1 = "$(PARA1)"
67+ para2 = "$(PARA2)"
68+ '';
69+
70+ project-m36-env = stdenv.mkDerivation {
71+ name = "project-m36-env";
72+ phases = [ "installPhase" "fixupPhase" ];
73+
74+ installPhase = ''
75+ mkdir -p $out/etc/project-m36
76+ echo '${project-m36-conf}' > $out/etc/project-m36/project-m36.conf
77+ echo '${passwd}' > $out/etc/passwd
78+ echo '${group}' > $out/etc/group
79+ echo '${nsswitch}' > $out/etc/nsswitch.conf
80+ '';
81+ };
82+
83+ project-m36-docker = pkgs.dockerTools.buildImage {
84+ name = "project-m36";
85+ tag = project-m36.version;
86+
87+ contents = [ static-project-m36
88+ project-m36-env ];
89+ config = {
90+ Env = [
91+ "PARA1="
92+ "PARA2="
93+ ];
94+ User = "project-m36";
95+ Cmd = [ "${static-project-m36}/bin/project-m36" "/etc/project-m36/project-m36.conf" ];
96+ ExposedPorts = {
97+ "5432/tcp" = {};
98+ };
99+ WorkingDir = "/data";
100+ Volumes = {
101+ "/data" = {};
102+ };
103+ };
104+};
105+in {
106+ inherit project-m36;
107+ inherit static-project-m36;
108+ inherit project-m36-docker;
109+}
ci/DevOps/local/test/build/nix/distributed-process-async.nixnew file+32
@@ -0,0 +1,32 @@
1+{ mkDerivation, ansi-terminal, base, binary, containers
2+, data-accessor, deepseq, distributed-process
3+, distributed-process-systest, exceptions, fetchgit, fingertree
4+, hashable, mtl, network, network-transport, network-transport-tcp
5+, rematch, stdenv, stm, test-framework, test-framework-hunit, time
6+, transformers, unordered-containers
7+}:
8+mkDerivation {
9+ pname = "distributed-process-async";
10+ version = "0.2.6";
11+ src = fetchgit {
12+ url = "https://github.com/hughjfchen/distributed-process-async";
13+ sha256 = "00sh8glxf21l56s07v5jp13gxq2v5cp8w2b7snq3dc405mrl2jk9";
14+ rev = "73fcda3c254538db2386184530203c8aac26b905";
15+ fetchSubmodules = true;
16+ };
17+ libraryHaskellDepends = [
18+ base binary containers data-accessor deepseq distributed-process
19+ exceptions fingertree hashable mtl stm time transformers
20+ unordered-containers
21+ ];
22+ testHaskellDepends = [
23+ ansi-terminal base binary deepseq distributed-process
24+ distributed-process-systest exceptions network network-transport
25+ network-transport-tcp rematch stm test-framework
26+ test-framework-hunit transformers
27+ ];
28+ doCheck = false;
29+ homepage = "http://github.com/haskell-distributed/distributed-process-async";
30+ description = "Cloud Haskell Async API";
31+ license = stdenv.lib.licenses.bsd3;
32+}
ci/DevOps/local/test/build/nix/distributed-process-client-server.nixnew file+34
@@ -0,0 +1,34 @@
1+{ mkDerivation, ansi-terminal, base, binary, containers, deepseq
2+, distributed-process, distributed-process-async
3+, distributed-process-extras, distributed-process-systest
4+, exceptions, fetchgit, fingertree, ghc-prim, hashable, HUnit, mtl
5+, network, network-transport, network-transport-tcp, rematch
6+, stdenv, stm, test-framework, test-framework-hunit, time
7+, transformers, unordered-containers
8+}:
9+mkDerivation {
10+ pname = "distributed-process-client-server";
11+ version = "0.2.5.1";
12+ src = fetchgit {
13+ url = "https://github.com/hughjfchen/distributed-process-client-server";
14+ sha256 = "1ld4madf8fbv640rv0gyp1sbfac687k9iikaqj23rdvr2bi22h2v";
15+ rev = "4648b7f7cce67c0af47bd0f56915bc6d59131225";
16+ fetchSubmodules = true;
17+ };
18+ libraryHaskellDepends = [
19+ base binary containers deepseq distributed-process
20+ distributed-process-async distributed-process-extras exceptions
21+ fingertree hashable mtl stm time transformers unordered-containers
22+ ];
23+ testHaskellDepends = [
24+ ansi-terminal base binary containers deepseq distributed-process
25+ distributed-process-async distributed-process-extras
26+ distributed-process-systest exceptions fingertree ghc-prim HUnit
27+ mtl network network-transport network-transport-tcp rematch stm
28+ test-framework test-framework-hunit transformers
29+ ];
30+ doCheck = false;
31+ homepage = "http://github.com/haskell-distributed/distributed-process-client-server";
32+ description = "The Cloud Haskell Application Platform";
33+ license = stdenv.lib.licenses.bsd3;
34+}
ci/DevOps/local/test/build/nix/distributed-process-extras.nixnew file+35
@@ -0,0 +1,35 @@
1+{ mkDerivation, ansi-terminal, base, binary, bytestring, containers
2+, data-accessor, deepseq, distributed-process
3+, distributed-process-systest, distributed-static, exceptions
4+, fetchgit, fingertree, ghc-prim, hashable, HUnit, mtl, network
5+, network-transport, network-transport-tcp, QuickCheck, rematch
6+, stdenv, stm, test-framework, test-framework-hunit
7+, test-framework-quickcheck2, time, transformers
8+, unordered-containers
9+}:
10+mkDerivation {
11+ pname = "distributed-process-extras";
12+ version = "0.3.5";
13+ src = fetchgit {
14+ url = "https://github.com/hughjfchen/distributed-process-extras";
15+ sha256 = "1fk3sxk9953wp3ya0c21l2d3yn18931bsny5d01wpn14khdy7mfj";
16+ rev = "5f75e9ff6d1df2c12f28d99adb15ea4267f02017";
17+ fetchSubmodules = true;
18+ };
19+ libraryHaskellDepends = [
20+ base binary containers deepseq distributed-process exceptions
21+ fingertree hashable mtl stm time transformers unordered-containers
22+ ];
23+ testHaskellDepends = [
24+ ansi-terminal base binary bytestring containers data-accessor
25+ deepseq distributed-process distributed-process-systest
26+ distributed-static fingertree ghc-prim hashable HUnit mtl network
27+ network-transport network-transport-tcp QuickCheck rematch stm
28+ test-framework test-framework-hunit test-framework-quickcheck2 time
29+ transformers unordered-containers
30+ ];
31+ doCheck = false;
32+ homepage = "http://github.com/haskell-distributed/distributed-process-extras";
33+ description = "Cloud Haskell Extras";
34+ license = stdenv.lib.licenses.bsd3;
35+}
ci/DevOps/local/test/build/nix/distributed-process.nixnew file+27
@@ -0,0 +1,27 @@
1+{ mkDerivation, base, binary, bytestring, containers, data-accessor
2+, deepseq, distributed-static, exceptions, fetchgit, hashable, mtl
3+, network-transport, network-transport-tcp, random, rank1dynamic
4+, stdenv, stm, syb, template-haskell, time, transformers
5+}:
6+mkDerivation {
7+ pname = "distributed-process";
8+ version = "0.7.4";
9+ src = fetchgit {
10+ url = "https://github.com/haskell-distributed/distributed-process";
11+ sha256 = "0c71b3nc19zic9xiirkc41znv93f9j9qlf2kn89mjjyh9w7dazsn";
12+ rev = "660d554f6acd2dba8b605c84e8fa69e45708bc14";
13+ fetchSubmodules = true;
14+ };
15+ libraryHaskellDepends = [
16+ base binary bytestring containers data-accessor deepseq
17+ distributed-static exceptions hashable mtl network-transport random
18+ rank1dynamic stm syb template-haskell time transformers
19+ ];
20+ benchmarkHaskellDepends = [
21+ base binary bytestring network-transport-tcp
22+ ];
23+ doCheck = false;
24+ homepage = "http://haskell-distributed.github.com/";
25+ description = "Cloud Haskell: Erlang-style concurrency in Haskell";
26+ license = stdenv.lib.licenses.bsd3;
27+}
ci/DevOps/local/test/build/nix/distributed-static.nixnew file+15
@@ -0,0 +1,15 @@
1+{ mkDerivation, base, binary, bytestring, containers, deepseq
2+, rank1dynamic, stdenv
3+}:
4+mkDerivation {
5+ pname = "distributed-static";
6+ version = "0.3.9";
7+ sha256 = "ee9a9595c20c6456b2b14e579349546f2e0cda46706a72858ec651dbd01490d9";
8+ libraryHaskellDepends = [
9+ base binary bytestring containers deepseq rank1dynamic
10+ ];
11+ doCheck = false;
12+ homepage = "http://haskell-distributed.github.com";
13+ description = "Compositional, type-safe, polymorphic static values and closures";
14+ license = stdenv.lib.licenses.bsd3;
15+}
ci/DevOps/local/test/build/nix/extended-reals.nixnew file+19
@@ -0,0 +1,19 @@
1+{ mkDerivation, base, deepseq, hashable, HUnit, QuickCheck, stdenv
2+, tasty, tasty-hunit, tasty-quickcheck, tasty-th
3+}:
4+mkDerivation {
5+ pname = "extended-reals";
6+ version = "0.2.3.0";
7+ sha256 = "7c8ac733ef09cb37c0a9816e7765ab6fe46551ee58445c00fc6c52a37eef169c";
8+ revision = "5";
9+ editedCabalFile = "1qm0xrlklg0849a2ydg2gh1fimxknmwpy7xmh4p9qsy5dlyj7516";
10+ libraryHaskellDepends = [ base deepseq hashable ];
11+ testHaskellDepends = [
12+ base deepseq HUnit QuickCheck tasty tasty-hunit tasty-quickcheck
13+ tasty-th
14+ ];
15+ doCheck = false;
16+ homepage = "https://github.com/msakai/extended-reals/";
17+ description = "Extension of real numbers with positive/negative infinities";
18+ license = stdenv.lib.licenses.bsd3;
19+}
ci/DevOps/local/test/build/nix/hashable-time.nixnew file+12
@@ -0,0 +1,12 @@
1+{ mkDerivation, base, hashable, stdenv, time }:
2+mkDerivation {
3+ pname = "hashable-time";
4+ version = "0.2.0.2";
5+ sha256 = "fa61f7fbd493b5a54f2aeb10e0c1c4144111ecf34e74080d12c5738ce925fee0";
6+ revision = "3";
7+ editedCabalFile = "1dr7ak803ngrhpv43dy25jm18gfzn02gzd3hm31dzcjv3mxsmbrk";
8+ libraryHaskellDepends = [ base hashable time ];
9+ doCheck = false;
10+ description = "Hashable instances for Data.Time";
11+ license = stdenv.lib.licenses.bsd3;
12+}
ci/DevOps/local/test/build/nix/megaparsec.nixnew file+20
@@ -0,0 +1,20 @@
1+{ mkDerivation, base, bytestring, case-insensitive, containers
2+, criterion, deepseq, mtl, parser-combinators, scientific, stdenv
3+, text, transformers, weigh
4+}:
5+mkDerivation {
6+ pname = "megaparsec";
7+ version = "7.0.5";
8+ sha256 = "f2dc2ea9da25f726c0650051f4fe3cec0003a97dfa37b62a3f1acdba580c1d2f";
9+ libraryHaskellDepends = [
10+ base bytestring case-insensitive containers deepseq mtl
11+ parser-combinators scientific text transformers
12+ ];
13+ benchmarkHaskellDepends = [
14+ base containers criterion deepseq text weigh
15+ ];
16+ doCheck = false;
17+ homepage = "https://github.com/mrkkrp/megaparsec";
18+ description = "Monadic parser combinators";
19+ license = stdenv.lib.licenses.bsd2;
20+}
ci/DevOps/local/test/build/nix/network-transport-tcp.nixnew file+19
@@ -0,0 +1,19 @@
1+{ mkDerivation, async, base, bytestring, containers, data-accessor
2+, network, network-transport, network-transport-tests, stdenv, uuid
3+}:
4+mkDerivation {
5+ pname = "network-transport-tcp";
6+ version = "0.7.0";
7+ sha256 = "5630250afbf08b71b321fd1038183d1947b02d39c4e52800fbe17df29a62b993";
8+ libraryHaskellDepends = [
9+ async base bytestring containers data-accessor network
10+ network-transport uuid
11+ ];
12+ testHaskellDepends = [
13+ base bytestring network network-transport network-transport-tests
14+ ];
15+ doCheck = false;
16+ homepage = "http://haskell-distributed.github.com";
17+ description = "TCP instantiation of Network.Transport";
18+ license = stdenv.lib.licenses.bsd3;
19+}
ci/DevOps/local/test/build/nix/primitive-unlifted.nixnew file+12
@@ -0,0 +1,12 @@
1+{ mkDerivation, base, primitive, stdenv, stm }:
2+mkDerivation {
3+ pname = "primitive-unlifted";
4+ version = "0.1.2.0";
5+ sha256 = "031932b9958adabcb27ef1017a42266f3589b44cd25338c4d41d6a31407705ff";
6+ libraryHaskellDepends = [ base primitive ];
7+ testHaskellDepends = [ base primitive stm ];
8+ doCheck = false;
9+ homepage = "https://github.com/haskell-primitive/primitive-unlifted";
10+ description = "Primitive GHC types with unlifted types inside";
11+ license = stdenv.lib.licenses.bsd3;
12+}
ci/DevOps/local/test/build/nix/project-m36.nixnew file+71
@@ -0,0 +1,71 @@
1+{ mkDerivation, aeson, attoparsec, base, base64-bytestring, binary
2+, blaze-html, bytestring, Cabal, cassava, conduit, containers
3+, criterion, cryptohash-sha256, data-interval, deepseq
4+, deepseq-generics, deferred-folds, directory, distributed-process
5+, distributed-process-async, distributed-process-client-server
6+, distributed-process-extras, either, exceptions, extended-reals
7+, filepath, foldl, ghc, ghc-boot, ghc-paths, ghci, Glob, gnuplot
8+, hashable, hashable-time, haskeline, http-api-data, http-types
9+, HUnit, list-t, megaparsec, monad-parallel, MonadRandom, mtl
10+, network, network-transport, network-transport-tcp, old-locale
11+, optparse-applicative, parallel, parser-combinators, path-pieces
12+, QuickCheck, quickcheck-instances, random, random-shuffle
13+, resourcet, rset, scotty, semigroups, stdenv, stm, stm-containers
14+, template-haskell, temporary, text, time, transformers, unix
15+, unordered-containers, uuid, vector, vector-binary-instances
16+, websockets, zlib
17+}:
18+mkDerivation {
19+ pname = "project-m36";
20+ version = "0.7";
21+ src = /home/chenjf/projects/project-m36/ci/DevOps/local/test/build/../../../../..;
22+ isLibrary = true;
23+ isExecutable = true;
24+ libraryHaskellDepends = [
25+ aeson attoparsec base base64-bytestring binary bytestring cassava
26+ conduit containers cryptohash-sha256 data-interval deepseq
27+ deepseq-generics deferred-folds directory distributed-process
28+ distributed-process-async distributed-process-client-server
29+ distributed-process-extras either exceptions extended-reals
30+ filepath foldl ghc ghc-boot ghc-paths ghci Glob gnuplot hashable
31+ hashable-time haskeline http-api-data list-t monad-parallel
32+ MonadRandom mtl network-transport network-transport-tcp old-locale
33+ optparse-applicative parallel path-pieces QuickCheck
34+ quickcheck-instances random-shuffle resourcet rset semigroups stm
35+ stm-containers temporary text time transformers unix
36+ unordered-containers uuid vector vector-binary-instances zlib
37+ ];
38+ executableHaskellDepends = [
39+ aeson attoparsec base base64-bytestring binary blaze-html
40+ bytestring Cabal cassava conduit containers data-interval deepseq
41+ deepseq-generics directory either filepath ghc ghc-paths gnuplot
42+ hashable hashable-time haskeline http-api-data http-types HUnit
43+ list-t megaparsec MonadRandom mtl network-transport-tcp
44+ optparse-applicative parallel parser-combinators path-pieces random
45+ scotty semigroups stm stm-containers template-haskell temporary
46+ text time transformers unordered-containers uuid vector
47+ vector-binary-instances websockets
48+ ];
49+ testHaskellDepends = [
50+ aeson attoparsec base base64-bytestring binary bytestring Cabal
51+ cassava conduit containers data-interval deepseq deepseq-generics
52+ directory either filepath gnuplot hashable hashable-time haskeline
53+ http-api-data HUnit list-t megaparsec MonadRandom mtl network
54+ network-transport network-transport-tcp optparse-applicative
55+ parallel parser-combinators path-pieces random semigroups stm
56+ stm-containers template-haskell temporary text time transformers
57+ unordered-containers uuid vector vector-binary-instances websockets
58+ ];
59+ benchmarkHaskellDepends = [
60+ attoparsec base base64-bytestring binary bytestring Cabal cassava
61+ containers criterion data-interval deepseq deepseq-generics
62+ directory filepath gnuplot hashable hashable-time haskeline HUnit
63+ megaparsec mtl parallel stm stm-containers temporary text time
64+ transformers unordered-containers uuid vector
65+ vector-binary-instances
66+ ];
67+ doCheck = false;
68+ homepage = "https://github.com/agentm/project-m36";
69+ description = "Relational Algebra Engine";
70+ license = stdenv.lib.licenses.publicDomain;
71+}
ci/DevOps/local/test/build/nix/rank1dynamic.nixnew file+18
@@ -0,0 +1,18 @@
1+{ mkDerivation, base, binary, HUnit, stdenv, test-framework
2+, test-framework-hunit
3+}:
4+mkDerivation {
5+ pname = "rank1dynamic";
6+ version = "0.4.0";
7+ sha256 = "3c424bfe52b7d4766fd66ea34c204cf920b146455711d8d10d580ca6c175ab1d";
8+ revision = "1";
9+ editedCabalFile = "1idh1iz15pzdhrhy19584i9ahz41ijbmf56wbb2wns2kipy6w9lr";
10+ libraryHaskellDepends = [ base binary ];
11+ testHaskellDepends = [
12+ base HUnit test-framework test-framework-hunit
13+ ];
14+ doCheck = false;
15+ homepage = "http://haskell-distributed.github.com";
16+ description = "Like Data.Dynamic/Data.Typeable but with support for rank-1 polymorphic types";
17+ license = stdenv.lib.licenses.bsd3;
18+}
ci/DevOps/local/test/build/nix/rset.nixnew file+13
@@ -0,0 +1,13 @@
1+{ mkDerivation, base, QuickCheck, safe, stdenv }:
2+mkDerivation {
3+ pname = "rset";
4+ version = "1.0.0";
5+ sha256 = "f80e4f1092be752e7fc6ba965626d616b477a812c4425cab0c1456342e4c39b4";
6+ libraryHaskellDepends = [ base safe ];
7+ testHaskellDepends = [ base QuickCheck safe ];
8+ doCheck = false;
9+ homepage = "https://github.com/lovasko/rset";
10+ description = "Range set";
11+ license = "unknown";
12+ hydraPlatforms = stdenv.lib.platforms.none;
13+}
ci/DevOps/local/test/build/nix/shell.nixnew file+1
@@ -0,0 +1 @@
1+(import ./default.nix {}).project-m36.env
ci/DevOps/local/test/build/nix/stm-containers.nixnew file+20
@@ -0,0 +1,20 @@
1+{ mkDerivation, base, deferred-folds, focus, foldl, free, hashable
2+, HTF, list-t, QuickCheck, quickcheck-text, rerebase, stdenv
3+, stm-hamt, transformers
4+}:
5+mkDerivation {
6+ pname = "stm-containers";
7+ version = "1.1.0.4";
8+ sha256 = "d43346bfadbe5ccc33c0903a7dfbce8f48657184176fcefa11174ff9d2269655";
9+ libraryHaskellDepends = [
10+ base deferred-folds focus hashable list-t stm-hamt transformers
11+ ];
12+ testHaskellDepends = [
13+ deferred-folds focus foldl free HTF list-t QuickCheck
14+ quickcheck-text rerebase
15+ ];
16+ doCheck = false;
17+ homepage = "https://github.com/nikita-volkov/stm-containers";
18+ description = "Containers for STM";
19+ license = stdenv.lib.licenses.mit;
20+}
ci/DevOps/local/test/build/nix/stm-hamt.nixnew file+27
@@ -0,0 +1,27 @@
1+{ mkDerivation, async, base, criterion, deferred-folds, focus, free
2+, hashable, list-t, mwc-random, mwc-random-monad, primitive
3+, primitive-extras, QuickCheck, quickcheck-instances, rebase
4+, rerebase, stdenv, tasty, tasty-hunit, tasty-quickcheck
5+, transformers
6+}:
7+mkDerivation {
8+ pname = "stm-hamt";
9+ version = "1.2.0.3";
10+ sha256 = "2389eae079a7c80013c1ac028ee4750cdfec1f192f521561f3078f80c4c4d72f";
11+ libraryHaskellDepends = [
12+ base deferred-folds focus hashable list-t primitive
13+ primitive-extras transformers
14+ ];
15+ testHaskellDepends = [
16+ deferred-folds focus QuickCheck quickcheck-instances rerebase tasty
17+ tasty-hunit tasty-quickcheck
18+ ];
19+ benchmarkHaskellDepends = [
20+ async criterion focus free list-t mwc-random mwc-random-monad
21+ rebase
22+ ];
23+ doCheck = false;
24+ homepage = "https://github.com/nikita-volkov/stm-hamt";
25+ description = "STM-specialised Hash Array Mapped Trie";
26+ license = stdenv.lib.licenses.mit;
27+}
ci/DevOps/local/test/build/prepare.shnew file+21
@@ -0,0 +1,21 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "build prepare"
12+
13+#set +u to workaround the nix script temperlately.
14+set +u
15+. $HOME/.nix-profile/etc/profile.d/nix.sh
16+set -u
17+
18+# generate nix file for the project
19+ls ${SCRIPT_ABS_PATH}/../../../../../*.cabal > /dev/null 2>&1 || ls ${SCRIPT_ABS_PATH}/../../../../../package.yaml > /dev/null 2>&1 && cabal2nix --no-check ${SCRIPT_ABS_PATH}/../../../../.. > ${SCRIPT_ABS_PATH}/nix/project-m36.nix
20+
21+done_banner "project-m36" "build prepare"
ci/DevOps/local/test/build/unbuild.shnew file+18
@@ -0,0 +1,18 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+#set +u to workaround the nix script temperlately.
12+set +u
13+. $HOME/.nix-profile/etc/profile.d/nix.sh
14+set -u
15+
16+begin_banner "project-m36" "build unbuild"
17+
18+done_banner "project-m36" "build unbuild"
ci/DevOps/local/test/build/unfinishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "build unfinishing"
12+
13+done_banner "project-m36" "build unfinishing"
ci/DevOps/local/test/build/unprepare.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "build unprepare"
12+
13+done_banner "project-m36" "build unprepare"
ci/DevOps/local/test/cb-cd-ct.shnew file+40
@@ -0,0 +1,40 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. Build, Deploy and Test"
12+
13+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/prepare.sh
14+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/prepare.sh
15+
16+${SCRIPT_ABS_PATH}/prepare.sh
17+${SCRIPT_ABS_PATH}/build/prepare.sh
18+${SCRIPT_ABS_PATH}/build/build.sh
19+${SCRIPT_ABS_PATH}/build/finishing.sh
20+
21+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/finishing.sh
22+
23+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/prepare.sh
24+
25+${SCRIPT_ABS_PATH}/deploy/prepare.sh
26+${SCRIPT_ABS_PATH}/deploy/deploy.sh
27+${SCRIPT_ABS_PATH}/deploy/finishing.sh
28+
29+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/finishing.sh
30+
31+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/prepare.sh
32+
33+${SCRIPT_ABS_PATH}/test/prepare.sh
34+${SCRIPT_ABS_PATH}/test/test.sh
35+${SCRIPT_ABS_PATH}/test/finishing.sh
36+${SCRIPT_ABS_PATH}/finishing.sh
37+
38+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/finishing.sh
39+
40+done_banner "project-m36" "Cont. Build, Deploy and Test"
ci/DevOps/local/test/cb-cd.shnew file+33
@@ -0,0 +1,33 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. Build and Deploy"
12+
13+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/prepare.sh
14+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/prepare.sh
15+
16+${SCRIPT_ABS_PATH}/prepare.sh
17+${SCRIPT_ABS_PATH}/build/prepare.sh
18+${SCRIPT_ABS_PATH}/build/build.sh
19+${SCRIPT_ABS_PATH}/build/finishing.sh
20+
21+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/finishing.sh
22+
23+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/prepare.sh
24+
25+${SCRIPT_ABS_PATH}/deploy/prepare.sh
26+${SCRIPT_ABS_PATH}/deploy/deploy.sh
27+${SCRIPT_ABS_PATH}/deploy/finishing.sh
28+${SCRIPT_ABS_PATH}/finishing.sh
29+
30+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/finishing.sh
31+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/finishing.sh
32+
33+done_banner "project-m36" "Cont. Build and Deploy"
ci/DevOps/local/test/cb.shnew file+25
@@ -0,0 +1,25 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. Build"
12+
13+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/prepare.sh
14+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/prepare.sh
15+
16+${SCRIPT_ABS_PATH}/prepare.sh
17+${SCRIPT_ABS_PATH}/build/prepare.sh
18+${SCRIPT_ABS_PATH}/build/build.sh
19+${SCRIPT_ABS_PATH}/build/finishing.sh
20+${SCRIPT_ABS_PATH}/finishing.sh
21+
22+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/finishing.sh
23+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/finishing.sh
24+
25+done_banner "project-m36" "Cont. Build"
ci/DevOps/local/test/cd-ct.shnew file+31
@@ -0,0 +1,31 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. Deploy and Test"
12+
13+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/prepare.sh
14+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/prepare.sh
15+
16+${SCRIPT_ABS_PATH}/deploy/prepare.sh
17+${SCRIPT_ABS_PATH}/deploy/deploy.sh
18+${SCRIPT_ABS_PATH}/deploy/finishing.sh
19+
20+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/finishing.sh
21+
22+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/prepare.sh
23+
24+${SCRIPT_ABS_PATH}/test/prepare.sh
25+${SCRIPT_ABS_PATH}/test/test.sh
26+${SCRIPT_ABS_PATH}/test/finishing.sh
27+${SCRIPT_ABS_PATH}/finishing.sh
28+
29+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/finishing.sh
30+
31+done_banner "project-m36" "Cont. Deploy and Test"
ci/DevOps/local/test/cd.shnew file+25
@@ -0,0 +1,25 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. Deploy"
12+
13+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/prepare.sh
14+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/prepare.sh
15+
16+${SCRIPT_ABS_PATH}/prepare.sh
17+${SCRIPT_ABS_PATH}/deploy/prepare.sh
18+${SCRIPT_ABS_PATH}/deploy/deploy.sh
19+${SCRIPT_ABS_PATH}/deploy/finishing.sh
20+${SCRIPT_ABS_PATH}/finishing.sh
21+
22+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/finishing.sh
23+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/finishing.sh
24+
25+done_banner "project-m36" "Cont. Deploy"
ci/DevOps/local/test/ct.shnew file+25
@@ -0,0 +1,25 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. Test"
12+
13+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/prepare.sh
14+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/prepare.sh
15+
16+${SCRIPT_ABS_PATH}/prepare.sh
17+${SCRIPT_ABS_PATH}/test/prepare.sh
18+${SCRIPT_ABS_PATH}/test/test.sh
19+${SCRIPT_ABS_PATH}/test/finishing.sh
20+${SCRIPT_ABS_PATH}/finishing.sh
21+
22+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/finishing.sh
23+${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/finishing.sh
24+
25+done_banner "project-m36" "Cont. Test"
ci/DevOps/local/test/deploy/Dockerfilenew file+3
@@ -0,0 +1,3 @@
1+FROM depent_1:tag_1
2+RUN localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8
3+ENV LANG zh_CN.UTF-8
ci/DevOps/local/test/deploy/config/some-sub-project.dhallnew file

No changes to the content.

ci/DevOps/local/test/deploy/deploy.shnew file+15
@@ -0,0 +1,15 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "deploy deploy"
12+
13+sudo sg docker -c "docker-compose -f /var/project-m36/docker-compose-project-m36.yml up -d"
14+
15+done_banner "project-m36" "deploy deploy"
ci/DevOps/local/test/deploy/docker-compose.ymlnew file+33
@@ -0,0 +1,33 @@
1+# docker-compose.yml
2+
3+version: '2'
4+services:
5+ project-m36:
6+ image: project-m36:0.1.0.0
7+ ports:
8+ - "3000:3000"
9+ links:
10+ - depend_service:depend_service
11+ user: project-m36
12+ environment:
13+ PARA1: XXXXX
14+ PARA2: YYYYY
15+ command: static_project-m36_nix_store_path/bin/project-m36
16+ volumes:
17+ - "project-m36_config_path:/var/project-m36/config"
18+ - "project-m36_data_path:/var/project-m36/data"
19+ depends_on:
20+ - depend_service
21+ restart: unless-stopped
22+ depend_service:
23+ build: depend_service
24+ ports:
25+ - "5432:5432"
26+ user: depend_service
27+ environment:
28+ DEPEND_SERVICE_PARA1: ZZZZ
29+ command: depend_service
30+ volumes:
31+ - "depend_service_path:/var/lib/depend_service_path"
32+ - "depend_service_data_path:/depend_service_data"
33+ restart: unless-stopped
ci/DevOps/local/test/deploy/finishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "deploy finishing"
12+
13+done_banner "project-m36" "deploy finishing"
ci/DevOps/local/test/deploy/non-docker-dependencies/some-sub-project-non-docker-dependencies-list.dhallnew file

No changes to the content.

ci/DevOps/local/test/deploy/prepare.shnew file+55
@@ -0,0 +1,55 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "deploy prepare"
12+
13+if [ ! -L ${SCRIPT_ABS_PATH}/../../../../result ]; then
14+ warn "no project-m36 build result found, suppose that the image would be pull from registry"
15+else
16+ sudo sg docker -c "docker load -i ${SCRIPT_ABS_PATH}/../../../../result"
17+fi
18+
19+set +e
20+myGroup2=$(awk -F":" '{print $1}' /etc/group | grep -w project-m36)
21+set -e
22+if [ "X${myGroup2}" = "X" ]; then
23+ info "no project-m36 group defined yet, create it..."
24+ sudo groupadd -f --gid 90001 project-m36
25+fi
26+
27+set +e
28+myUser2=$(awk -F":" '{print $1}' /etc/passwd | grep -w project-m36)
29+set -e
30+if [ "X${myUser2}" = "X" ]; then
31+ info "no project-m36 user defined yet, create it..."
32+ sudo useradd -G docker -m -p Passw0rd --uid 90001 --gid 90001 project-m36
33+fi
34+
35+if [ ! -d /var/project-m36 ]; then
36+ info "no /var/project-m36 directory found, create it..."
37+ sudo mkdir -p /var/project-m36/data
38+ sudo mkdir -p /var/project-m36/config
39+ sudo chown -R project-m36:project-m36 /var/project-m36
40+fi
41+
42+sudo cp ${SCRIPT_ABS_PATH}/docker-compose.yml /var/project-m36/docker-compose-project-m36.yml.orig
43+sudo chown project-m36:project-m36 /var/project-m36/docker-compose-project-m36.yml.orig
44+
45+sudo sed "s:project-m36_config_path:/var/project-m36/config:g" < /var/project-m36/docker-compose-project-m36.yml.orig | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml.01" project-m36
46+sudo sed "s:project-m36_data_path:/var/project-m36/data:g" < /var/project-m36/docker-compose-project-m36.yml.01 | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml" project-m36
47+
48+if [ -L ${SCRIPT_ABS_PATH}/../../../../result ]; then
49+ project-m36_IMAGE_ID=$(sudo sg docker -c "docker images"|grep -w project-m36|awk '{print $3}')
50+ cmdPath=$(sudo sg docker -c "docker image inspect ${project-m36_IMAGE_ID}" | grep "/nix/store/" | awk -F"/" '{print "/nix/store/"$4}')
51+ sudo sed "s:static_project-m36_nix_store_path:${cmdPath}:g" < /var/project-m36/docker-compose-project-m36.yml | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml.02" project-m36
52+ sudo cat /var/project-m36/docker-compose-project-m36.yml.02 | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml" project-m36
53+fi
54+
55+done_banner "project-m36" "deploy prepare"
ci/DevOps/local/test/deploy/undeploy.shnew file+15
@@ -0,0 +1,15 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "deploy undeploy"
12+
13+sudo sg docker -c "docker-compose -f /var/project-m36/docker-compose-project-m36.yml down"
14+
15+done_banner "project-m36" "deploy undeploy"
ci/DevOps/local/test/deploy/unfinishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "deploy unfinishing"
12+
13+done_banner "project-m36" "deploy unfinishing"
ci/DevOps/local/test/deploy/unprepare.shnew file+38
@@ -0,0 +1,38 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "deploy unprepare"
12+
13+if [ -d /var/project-m36 ]; then
14+ info "/var/project-m36 directory found, delete it..."
15+ sudo rm -fr /var/project-m36
16+fi
17+
18+set +e
19+myUser2=$(awk -F":" '{print $1}' /etc/passwd | grep -w project-m36)
20+if [ "X${myUser2}" != "X" ]; then
21+ info "project-m36 user defined, delete it..."
22+ sudo userdel -fr project-m36
23+fi
24+
25+myGroup2=$(awk -F":" '{print $1}' /etc/group | grep -w project-m36)
26+if [ "X${myGroup2}" != "X" ]; then
27+ info "project-m36 group defined, delete it..."
28+ sudo groupdel -f project-m36
29+fi
30+set -e
31+
32+MY_TO_REMOVE_IMAGES=$(sudo sg docker -c "docker images"|grep -w project-m36|awk '{print $3}')
33+for MY_TO_REMOVE_IMAGE in ${MY_TO_REMOVE_IMAGES}
34+do
35+ sudo sg docker -c "docker image rm -f ${MY_TO_REMOVE_IMAGE}"
36+done
37+
38+done_banner "project-m36" "deploy unprepare"
ci/DevOps/local/test/finishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "finishing"
12+
13+done_banner "project-m36" "finishing"
ci/DevOps/local/test/prepare.shnew file+14
@@ -0,0 +1,14 @@
1+#!/usr/bin/env bash
2+
3+if ! type dirname > /dev/null 2>&1; then
4+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
5+ exit 1
6+fi
7+
8+. "$(dirname "$0")"/../../common/common.sh
9+
10+init_with_root_or_sudo "$0"
11+
12+begin_banner "project-m36" "prepare"
13+
14+done_banner "project-m36" "prepare"
ci/DevOps/local/test/test/finishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "test finishing"
12+
13+done_banner "project-m36" "test finishing"
ci/DevOps/local/test/test/prepare.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "test prepare"
12+
13+done_banner "project-m36" "test prepare"
ci/DevOps/local/test/test/test.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "test test"
12+
13+done_banner "project-m36" "test test"
ci/DevOps/local/test/test/unfinishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "test unfinishing"
12+
13+done_banner "project-m36" "test unfinishing"
ci/DevOps/local/test/test/unprepare.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "test unprepare"
12+
13+done_banner "project-m36" "test unprepare"
ci/DevOps/local/test/test/untest.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "test untest"
12+
13+done_banner "project-m36" "test untest"
ci/DevOps/local/test/uncb-uncd-unct.shnew file+45
@@ -0,0 +1,45 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. UnBuild, UnDeploy and UnTest"
12+
13+# I don't think we need to undo the top-level finishing and prepare
14+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unfinishing.sh
15+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/unfinishing.sh
16+
17+${SCRIPT_ABS_PATH}/unfinishing.sh
18+${SCRIPT_ABS_PATH}/test/unfinishing.sh
19+${SCRIPT_ABS_PATH}/test/untest.sh
20+${SCRIPT_ABS_PATH}/test/unprepare.sh
21+
22+# I don't think we need this either
23+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/unprepare.sh
24+
25+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unfinishing.sh
26+
27+${SCRIPT_ABS_PATH}/deploy/unfinishing.sh
28+${SCRIPT_ABS_PATH}/deploy/undeploy.sh
29+${SCRIPT_ABS_PATH}/deploy/unprepare.sh
30+
31+# I don't think we need this either
32+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unprepare.sh
33+
34+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/unfinishing.sh
35+
36+${SCRIPT_ABS_PATH}/build/unfinishing.sh
37+${SCRIPT_ABS_PATH}/build/unbuild.sh
38+${SCRIPT_ABS_PATH}/build/unprepare.sh
39+${SCRIPT_ABS_PATH}/unprepare.sh
40+
41+# I don't think we need this either
42+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/unprepare.sh
43+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unprepare.sh
44+
45+done_banner "project-m36" "Cont. UnBuild, UnDeploy and UnTest"
ci/DevOps/local/test/uncb-uncd.shnew file+36
@@ -0,0 +1,36 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. UnBuild and UnDeploy"
12+
13+# I don't think we need to undo the top-level finishing and prepare
14+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unfinishing.sh
15+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unfinishing.sh
16+
17+${SCRIPT_ABS_PATH}/unfinishing.sh
18+${SCRIPT_ABS_PATH}/deploy/unfinishing.sh
19+${SCRIPT_ABS_PATH}/deploy/undeploy.sh
20+${SCRIPT_ABS_PATH}/deploy/unprepare.sh
21+
22+# I don't think we need this either
23+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unprepare.sh
24+
25+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/unfinishing.sh
26+
27+${SCRIPT_ABS_PATH}/build/unfinishing.sh
28+${SCRIPT_ABS_PATH}/build/unbuild.sh
29+${SCRIPT_ABS_PATH}/build/unprepare.sh
30+${SCRIPT_ABS_PATH}/unprepare.sh
31+
32+# I don't think we need this either
33+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/unprepare.sh
34+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unprepare.sh
35+
36+done_banner "project-m36" "Cont. UnBuild and UnDeploy"
ci/DevOps/local/test/uncb.shnew file+27
@@ -0,0 +1,27 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. UnBuild"
12+
13+# I don't think we need to undo the top-level finishing and prepare
14+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unfinishing.sh
15+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/unfinishing.sh
16+
17+${SCRIPT_ABS_PATH}/unfinishing.sh
18+${SCRIPT_ABS_PATH}/build/unfinishing.sh
19+${SCRIPT_ABS_PATH}/build/unbuild.sh
20+${SCRIPT_ABS_PATH}/build/unprepare.sh
21+${SCRIPT_ABS_PATH}/unprepare.sh
22+
23+# I don't think we need this either
24+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/build/unprepare.sh
25+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unprepare.sh
26+
27+done_banner "project-m36" "Cont. UnBuild"
ci/DevOps/local/test/uncd-unct.shnew file+36
@@ -0,0 +1,36 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. UnDeploy and UnTest"
12+
13+# I don't think we need to undo the top-level finishing and prepare
14+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unfinishing.sh
15+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/unfinishing.sh
16+
17+${SCRIPT_ABS_PATH}/unfinishing.sh
18+${SCRIPT_ABS_PATH}/test/unfinishing.sh
19+${SCRIPT_ABS_PATH}/test/untest.sh
20+${SCRIPT_ABS_PATH}/test/unprepare.sh
21+
22+# I don't think we need this either
23+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/unprepare.sh
24+
25+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unfinishing.sh
26+
27+${SCRIPT_ABS_PATH}/deploy/unfinishing.sh
28+${SCRIPT_ABS_PATH}/deploy/undeploy.sh
29+${SCRIPT_ABS_PATH}/deploy/unprepare.sh
30+${SCRIPT_ABS_PATH}/unprepare.sh
31+
32+# I don't think we need this either
33+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unprepare.sh
34+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unprepare.sh
35+
36+done_banner "project-m36" "Cont. UnDeploy and UnTest"
ci/DevOps/local/test/uncd.shnew file+27
@@ -0,0 +1,27 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. UnDeploy"
12+
13+# I don't think we need to undo the top-level finishing and prepare
14+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unfinishing.sh
15+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unfinishing.sh
16+
17+${SCRIPT_ABS_PATH}/unfinishing.sh
18+${SCRIPT_ABS_PATH}/deploy/unfinishing.sh
19+${SCRIPT_ABS_PATH}/deploy/undeploy.sh
20+${SCRIPT_ABS_PATH}/deploy/unprepare.sh
21+${SCRIPT_ABS_PATH}/unprepare.sh
22+
23+# I don't think we need this either
24+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/deploy/unprepare.sh
25+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unprepare.sh
26+
27+done_banner "project-m36" "Cont. UnDeploy"
ci/DevOps/local/test/unct.shnew file+27
@@ -0,0 +1,27 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "Cont. UnTest"
12+
13+# I don't think we need to undo the top-level finishing and prepare
14+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unfinishing.sh
15+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/unfinishing.sh
16+
17+${SCRIPT_ABS_PATH}/unfinishing.sh
18+${SCRIPT_ABS_PATH}/test/unfinishing.sh
19+${SCRIPT_ABS_PATH}/test/untest.sh
20+${SCRIPT_ABS_PATH}/test/unprepare.sh
21+${SCRIPT_ABS_PATH}/unprepare.sh
22+
23+# I don't think we need this either
24+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/test/unprepare.sh
25+#${SCRIPT_ABS_PATH}/../../../../DevOps/local/test/unprepare.sh
26+
27+done_banner "project-m36" "Cont. UnTest"
ci/DevOps/local/test/unfinishing.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "unfinishing"
12+
13+done_banner "project-m36" "unfinishing"
ci/DevOps/local/test/unprepare.shnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+if ! type dirname > /dev/null 2>&1; then
3+ echo "Not even a linux or macOS, Windoze? We don't support it. Abort."
4+ exit 1
5+fi
6+
7+. "$(dirname "$0")"/../../common/common.sh
8+
9+init_with_root_or_sudo "$0"
10+
11+begin_banner "project-m36" "unprepare"
12+
13+done_banner "project-m36" "unprepare"