@leverege/build-tools 2.34.3 → 2.35.0-john.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/server/firebaseDeploy.js +13 -5
- package/lib/web/firebaseDeploy.js +13 -5
- package/package.json +3 -3
- package/src/bash-funcs +1 -1
- package/src/circle-lib.yml +150 -0
- package/src/circle-srv.yml +213 -0
- package/src/firebaseDeploy.mjs +12 -5
- package/src/helm-charts/geotile-server/.nohelm +0 -0
- package/src/helm-charts/geotile-server/gitignore +1 -0
- package/src/helm-charts/geotile-server/helmup.plugin +6 -0
- package/src/helmdn +5 -3
- package/src/helmup +1 -1
- package/src/k8scale +12 -4
- package/leverege-build-tools-2.21.13.tgz +0 -0
|
@@ -38,11 +38,7 @@ const INTERACTIVE_MODE = !TARGET;
|
|
|
38
38
|
let exited = false;
|
|
39
39
|
const SECRETS_DIR = 'secrets';
|
|
40
40
|
const EXIT_EVENTS = ['SIGINT', 'exit', 'uncaughException', 'unhandledRejection'];
|
|
41
|
-
const [firebaserc, firebaseJson,
|
|
42
|
-
stdout
|
|
43
|
-
}) => {
|
|
44
|
-
return stdout.split('\n')[0];
|
|
45
|
-
})]);
|
|
41
|
+
const [firebaserc, firebaseJson, git] = await Promise.all([_zx.fs.exists(_zx.path.join(process.cwd(), '.firebaserc')), _zx.fs.exists(_zx.path.join(process.cwd(), 'firebase.json')), _zx.fs.exists(_zx.path.join(process.cwd(), '.git/HEAD'))]);
|
|
46
42
|
if (!firebaserc) {
|
|
47
43
|
console.log(_zx.chalk.red('No .firebaserc file found. Make sure that you are executing firebaseDeploy from within a firebase project directory.'));
|
|
48
44
|
}
|
|
@@ -55,6 +51,18 @@ if (!firebaserc || !firebaseJson) {
|
|
|
55
51
|
const firebasercContent = JSON.parse(await _zx.fs.readFile(_zx.path.join(process.cwd(), '.firebaserc'), {
|
|
56
52
|
encoding: 'utf-8'
|
|
57
53
|
}));
|
|
54
|
+
|
|
55
|
+
// If in a git repo, fetch the name of the git branch to use as a default
|
|
56
|
+
// name in case a deployment channel is needed. Examining this file directly
|
|
57
|
+
// is less cumbersome then running an actual git command to fetch the
|
|
58
|
+
// branch name
|
|
59
|
+
let gitBranch;
|
|
60
|
+
if (git) {
|
|
61
|
+
const gitContent = (await _zx.fs.readFile(_zx.path.join(process.cwd(), '.git/HEAD'), {
|
|
62
|
+
encoding: 'utf-8'
|
|
63
|
+
}))?.split('/');
|
|
64
|
+
gitBranch = gitContent[gitContent?.length - 1]?.trimEnd('\n');
|
|
65
|
+
}
|
|
58
66
|
let maxSiteIdLength = 0;
|
|
59
67
|
const targets = Object.entries(firebasercContent.targets).reduce((prev, [projectId, config]) => {
|
|
60
68
|
Object.entries(config.hosting).forEach(([siteId, aliases]) => {
|
|
@@ -38,11 +38,7 @@ const INTERACTIVE_MODE = !TARGET;
|
|
|
38
38
|
let exited = false;
|
|
39
39
|
const SECRETS_DIR = 'secrets';
|
|
40
40
|
const EXIT_EVENTS = ['SIGINT', 'exit', 'uncaughException', 'unhandledRejection'];
|
|
41
|
-
const [firebaserc, firebaseJson,
|
|
42
|
-
stdout
|
|
43
|
-
}) => {
|
|
44
|
-
return stdout.split('\n')[0];
|
|
45
|
-
})]);
|
|
41
|
+
const [firebaserc, firebaseJson, git] = await Promise.all([_zx.fs.exists(_zx.path.join(process.cwd(), '.firebaserc')), _zx.fs.exists(_zx.path.join(process.cwd(), 'firebase.json')), _zx.fs.exists(_zx.path.join(process.cwd(), '.git/HEAD'))]);
|
|
46
42
|
if (!firebaserc) {
|
|
47
43
|
console.log(_zx.chalk.red('No .firebaserc file found. Make sure that you are executing firebaseDeploy from within a firebase project directory.'));
|
|
48
44
|
}
|
|
@@ -55,6 +51,18 @@ if (!firebaserc || !firebaseJson) {
|
|
|
55
51
|
const firebasercContent = JSON.parse(await _zx.fs.readFile(_zx.path.join(process.cwd(), '.firebaserc'), {
|
|
56
52
|
encoding: 'utf-8'
|
|
57
53
|
}));
|
|
54
|
+
|
|
55
|
+
// If in a git repo, fetch the name of the git branch to use as a default
|
|
56
|
+
// name in case a deployment channel is needed. Examining this file directly
|
|
57
|
+
// is less cumbersome then running an actual git command to fetch the
|
|
58
|
+
// branch name
|
|
59
|
+
let gitBranch;
|
|
60
|
+
if (git) {
|
|
61
|
+
const gitContent = (await _zx.fs.readFile(_zx.path.join(process.cwd(), '.git/HEAD'), {
|
|
62
|
+
encoding: 'utf-8'
|
|
63
|
+
}))?.split('/');
|
|
64
|
+
gitBranch = gitContent[gitContent?.length - 1]?.trimEnd('\n');
|
|
65
|
+
}
|
|
58
66
|
let maxSiteIdLength = 0;
|
|
59
67
|
const targets = Object.entries(firebasercContent.targets).reduce((prev, [projectId, config]) => {
|
|
60
68
|
Object.entries(config.hosting).forEach(([siteId, aliases]) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leverege/build-tools",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.35.0-john.1",
|
|
4
4
|
"description": "A collection of build / support tools for Leverege developers",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"command-line-usage": "^6.1.3",
|
|
58
58
|
"deepmerge": "^4.3.1",
|
|
59
59
|
"dotenv": "^16.3.1",
|
|
60
|
-
"enquirer": "^2.
|
|
60
|
+
"enquirer": "^2.3.6",
|
|
61
61
|
"execa": "^5.1.1",
|
|
62
62
|
"get-bin-path": "^10.0.0",
|
|
63
63
|
"glob": "^8.1.0",
|
|
@@ -75,6 +75,6 @@
|
|
|
75
75
|
"@babel/core": "^7.22.9",
|
|
76
76
|
"@leverege/babel-preset-leverege-node": "^2.0.0",
|
|
77
77
|
"@leverege/eslint-config-leverege": "^3.0.1",
|
|
78
|
-
"npm": "^9.8.
|
|
78
|
+
"npm": "^9.8.0"
|
|
79
79
|
}
|
|
80
80
|
}
|
package/src/bash-funcs
CHANGED
|
@@ -137,7 +137,7 @@ function postToSlack() {
|
|
|
137
137
|
local dts="`date +\"%c\"`"
|
|
138
138
|
local slackURL="https://hooks.slack.com/services/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"
|
|
139
139
|
local channel="#dev-ops-helm"
|
|
140
|
-
local slackmsg="\n--- $running
|
|
140
|
+
local slackmsg="\n--- $running \`$GCP_PROJECT_ID\` => $USER / `node --version` @ $dts\n \`$toPost\`"
|
|
141
141
|
|
|
142
142
|
curl -X POST -H 'Content-type: application/json' \
|
|
143
143
|
--data "{\"text\":\"$slackmsg\",\"channel\":\"$channel\"}" \
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
version: 2.1
|
|
2
|
+
jobs:
|
|
3
|
+
install:
|
|
4
|
+
docker:
|
|
5
|
+
- image: $CIRCLE_NODE_IMG
|
|
6
|
+
steps:
|
|
7
|
+
- checkout
|
|
8
|
+
- restore_cache:
|
|
9
|
+
keys:
|
|
10
|
+
- v1-npm-deps-{{ checksum "package-lock.json" }}
|
|
11
|
+
- v1-npm-deps-
|
|
12
|
+
|
|
13
|
+
- run:
|
|
14
|
+
name: Setup @leverege Token
|
|
15
|
+
command: echo \${NPMRC} > ~/.npmrc
|
|
16
|
+
|
|
17
|
+
- run: npm install
|
|
18
|
+
|
|
19
|
+
- save_cache:
|
|
20
|
+
key: v1-npm-deps-{{ checksum "package-lock.json" }}
|
|
21
|
+
paths:
|
|
22
|
+
- ./node_modules
|
|
23
|
+
|
|
24
|
+
- persist_to_workspace:
|
|
25
|
+
root: /home/circleci/project
|
|
26
|
+
paths:
|
|
27
|
+
- ./node_modules
|
|
28
|
+
|
|
29
|
+
security-check:
|
|
30
|
+
docker:
|
|
31
|
+
- image: $CIRCLE_NODE_IMG
|
|
32
|
+
steps:
|
|
33
|
+
- checkout
|
|
34
|
+
- attach_workspace:
|
|
35
|
+
at: ~/project
|
|
36
|
+
- run:
|
|
37
|
+
name: Check for vulnerabilities
|
|
38
|
+
command: npm audit --production --audit-level=moderate
|
|
39
|
+
|
|
40
|
+
license-check:
|
|
41
|
+
docker:
|
|
42
|
+
- image: $CIRCLE_NODE_IMG
|
|
43
|
+
steps:
|
|
44
|
+
- checkout
|
|
45
|
+
- attach_workspace:
|
|
46
|
+
at: ~/project
|
|
47
|
+
- run:
|
|
48
|
+
name: Check for LICENSE and README files
|
|
49
|
+
command: npm run pkglint
|
|
50
|
+
|
|
51
|
+
- run:
|
|
52
|
+
name: Check for license violations (e.g. GPL)
|
|
53
|
+
command: npx license-checker --production --summary --failOn GPL
|
|
54
|
+
|
|
55
|
+
lint:
|
|
56
|
+
docker:
|
|
57
|
+
- image: $CIRCLE_NODE_IMG
|
|
58
|
+
steps:
|
|
59
|
+
- checkout
|
|
60
|
+
- attach_workspace:
|
|
61
|
+
at: ~/project
|
|
62
|
+
- run:
|
|
63
|
+
name: Lint and save results
|
|
64
|
+
command: npm run lint-ci
|
|
65
|
+
|
|
66
|
+
- store_test_results:
|
|
67
|
+
path: reports
|
|
68
|
+
|
|
69
|
+
docs:
|
|
70
|
+
docker:
|
|
71
|
+
- image: $CIRCLE_NODE_IMG
|
|
72
|
+
steps:
|
|
73
|
+
- checkout
|
|
74
|
+
- attach_workspace:
|
|
75
|
+
at: ~/project
|
|
76
|
+
- run:
|
|
77
|
+
name: Generate docs
|
|
78
|
+
command: npx jsdoc -r src -R README.md -d docs
|
|
79
|
+
- store_artifacts:
|
|
80
|
+
path: docs
|
|
81
|
+
prefix: docs
|
|
82
|
+
|
|
83
|
+
coverage:
|
|
84
|
+
# coverage runs tests, generates coverage, and saves docs
|
|
85
|
+
environment:
|
|
86
|
+
TZ: 'America/New_York'
|
|
87
|
+
docker:
|
|
88
|
+
- image: $CIRCLE_NODE_IMG
|
|
89
|
+
# IF YOU NEED ANY OF THESE, UNCOMMENT TO USE
|
|
90
|
+
# - image: redis
|
|
91
|
+
# - image: circleci/mysql:5.7
|
|
92
|
+
# environment:
|
|
93
|
+
# MYSQL_USER: root
|
|
94
|
+
# MYSQL_ROOT_PASSWORD: root
|
|
95
|
+
# MYSQL_ALLOW_EMPTY_PASSWORD: true
|
|
96
|
+
# MYSQL_HOST: 127.0.0.1
|
|
97
|
+
# - image: nsqio/nsq
|
|
98
|
+
# command: /nsqlookupd -broadcast-address localhost:4160 -tcp-address 0.0.0.0:4160 -http-address 0.0.0.0:4161
|
|
99
|
+
|
|
100
|
+
# - image: nsqio/nsq
|
|
101
|
+
# command: >
|
|
102
|
+
# /nsqd
|
|
103
|
+
# -broadcast-address localhost:4150
|
|
104
|
+
# -tcp-address 0.0.0.0:4150
|
|
105
|
+
# -http-address 0.0.0.0:4151
|
|
106
|
+
# -lookupd-tcp-address localhost:4160
|
|
107
|
+
|
|
108
|
+
steps:
|
|
109
|
+
- checkout
|
|
110
|
+
- attach_workspace:
|
|
111
|
+
at: ~/project
|
|
112
|
+
|
|
113
|
+
# UNCOMMENT IF YOU NEED DECRYPTING SECRETS
|
|
114
|
+
# - run:
|
|
115
|
+
# name: Load secrets
|
|
116
|
+
# command: npm run decrypt
|
|
117
|
+
|
|
118
|
+
- run:
|
|
119
|
+
name: Run Tests and Generate Code Coverage
|
|
120
|
+
command: npm run coverage
|
|
121
|
+
|
|
122
|
+
- run:
|
|
123
|
+
name: Check if coverage meets at least 70%
|
|
124
|
+
command: npx c8 check-coverage --functions 70 --lines 70 --statements 70
|
|
125
|
+
|
|
126
|
+
- store_artifacts:
|
|
127
|
+
path: coverage
|
|
128
|
+
prefix: coverage
|
|
129
|
+
|
|
130
|
+
workflows:
|
|
131
|
+
version: 2.1
|
|
132
|
+
test-build-deploy:
|
|
133
|
+
jobs:
|
|
134
|
+
- install:
|
|
135
|
+
context: npm
|
|
136
|
+
- security-check:
|
|
137
|
+
requires:
|
|
138
|
+
- install
|
|
139
|
+
- license-check:
|
|
140
|
+
requires:
|
|
141
|
+
- install
|
|
142
|
+
- lint:
|
|
143
|
+
requires:
|
|
144
|
+
- install
|
|
145
|
+
- coverage:
|
|
146
|
+
requires:
|
|
147
|
+
- install
|
|
148
|
+
- docs:
|
|
149
|
+
requires:
|
|
150
|
+
- install
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
version: 2.1
|
|
2
|
+
#orbs:
|
|
3
|
+
# gcp-gcr: circleci/gcp-gcr@0.6.1
|
|
4
|
+
executors:
|
|
5
|
+
default:
|
|
6
|
+
description: >
|
|
7
|
+
A debian-based machine executor.
|
|
8
|
+
machine: true
|
|
9
|
+
jobs:
|
|
10
|
+
install:
|
|
11
|
+
docker:
|
|
12
|
+
- image: $CIRCLE_NODE_IMG
|
|
13
|
+
steps:
|
|
14
|
+
- checkout
|
|
15
|
+
- restore_cache:
|
|
16
|
+
keys:
|
|
17
|
+
- v1-npm-deps-{{ checksum "package-lock.json" }}
|
|
18
|
+
- v1-npm-deps-
|
|
19
|
+
|
|
20
|
+
- run:
|
|
21
|
+
name: Setup @leverege Token
|
|
22
|
+
command: echo \${NPMRC} > ~/.npmrc
|
|
23
|
+
|
|
24
|
+
- run: npm install
|
|
25
|
+
|
|
26
|
+
- save_cache:
|
|
27
|
+
key: v1-npm-deps-{{ checksum "package-lock.json" }}
|
|
28
|
+
paths:
|
|
29
|
+
- ./node_modules
|
|
30
|
+
|
|
31
|
+
- persist_to_workspace:
|
|
32
|
+
root: /home/circleci/project
|
|
33
|
+
paths:
|
|
34
|
+
- ./node_modules
|
|
35
|
+
|
|
36
|
+
security-check:
|
|
37
|
+
docker:
|
|
38
|
+
- image: $CIRCLE_NODE_IMG
|
|
39
|
+
steps:
|
|
40
|
+
- checkout
|
|
41
|
+
- attach_workspace:
|
|
42
|
+
at: ~/project
|
|
43
|
+
- run:
|
|
44
|
+
name: Check for vulnerabilities
|
|
45
|
+
command: npm audit --production --audit-level=moderate
|
|
46
|
+
|
|
47
|
+
license-check:
|
|
48
|
+
docker:
|
|
49
|
+
- image: $CIRCLE_NODE_IMG
|
|
50
|
+
steps:
|
|
51
|
+
- checkout
|
|
52
|
+
- attach_workspace:
|
|
53
|
+
at: ~/project
|
|
54
|
+
- run:
|
|
55
|
+
name: Check for LICENSE and README files
|
|
56
|
+
command: npm run pkglint
|
|
57
|
+
|
|
58
|
+
- run:
|
|
59
|
+
name: Check for license violations (e.g. GPL)
|
|
60
|
+
command: npx license-checker --production --summary --failOn GPL
|
|
61
|
+
|
|
62
|
+
lint:
|
|
63
|
+
docker:
|
|
64
|
+
- image: $CIRCLE_NODE_IMG
|
|
65
|
+
steps:
|
|
66
|
+
- checkout
|
|
67
|
+
- attach_workspace:
|
|
68
|
+
at: ~/project
|
|
69
|
+
- run:
|
|
70
|
+
name: Lint and save results
|
|
71
|
+
command: npm run lint-ci
|
|
72
|
+
|
|
73
|
+
- store_test_results:
|
|
74
|
+
path: reports
|
|
75
|
+
|
|
76
|
+
docs:
|
|
77
|
+
docker:
|
|
78
|
+
- image: $CIRCLE_NODE_IMG
|
|
79
|
+
steps:
|
|
80
|
+
- checkout
|
|
81
|
+
- attach_workspace:
|
|
82
|
+
at: ~/project
|
|
83
|
+
- run:
|
|
84
|
+
name: Generate docs
|
|
85
|
+
command: npx jsdoc -r src -R README.md -d docs
|
|
86
|
+
- store_artifacts:
|
|
87
|
+
path: docs
|
|
88
|
+
prefix: docs
|
|
89
|
+
|
|
90
|
+
coverage:
|
|
91
|
+
# coverage runs tests, generates coverage, and saves docs
|
|
92
|
+
environment:
|
|
93
|
+
TZ: 'America/New_York'
|
|
94
|
+
docker:
|
|
95
|
+
- image: $CIRCLE_NODE_IMG
|
|
96
|
+
# IF YOU NEED ANY OF THESE, UNCOMMENT TO USE
|
|
97
|
+
# - image: redis
|
|
98
|
+
# - image: circleci/mysql:5.7
|
|
99
|
+
# environment:
|
|
100
|
+
# MYSQL_USER: root
|
|
101
|
+
# MYSQL_ROOT_PASSWORD: root
|
|
102
|
+
# MYSQL_ALLOW_EMPTY_PASSWORD: true
|
|
103
|
+
# MYSQL_HOST: 127.0.0.1
|
|
104
|
+
# - image: nsqio/nsq
|
|
105
|
+
# command: /nsqlookupd -broadcast-address localhost:4160 -tcp-address 0.0.0.0:4160 -http-address 0.0.0.0:4161
|
|
106
|
+
|
|
107
|
+
# - image: nsqio/nsq
|
|
108
|
+
# command: >
|
|
109
|
+
# /nsqd
|
|
110
|
+
# -broadcast-address localhost:4150
|
|
111
|
+
# -tcp-address 0.0.0.0:4150
|
|
112
|
+
# -http-address 0.0.0.0:4151
|
|
113
|
+
# -lookupd-tcp-address localhost:4160
|
|
114
|
+
|
|
115
|
+
steps:
|
|
116
|
+
- checkout
|
|
117
|
+
- attach_workspace:
|
|
118
|
+
at: ~/project
|
|
119
|
+
|
|
120
|
+
# UNCOMMENT IF YOU NEED DECRYPTING SECRETS
|
|
121
|
+
# - run:
|
|
122
|
+
# name: Load secrets
|
|
123
|
+
# command: npm run decrypt
|
|
124
|
+
|
|
125
|
+
- run:
|
|
126
|
+
name: Run Tests and Generate Code Coverage
|
|
127
|
+
command: npm run coverage
|
|
128
|
+
|
|
129
|
+
- run:
|
|
130
|
+
name: Check if coverage meets at least 70%
|
|
131
|
+
command: npx c8 check-coverage --functions 70 --lines 70 --statements 70
|
|
132
|
+
|
|
133
|
+
- store_artifacts:
|
|
134
|
+
path: coverage
|
|
135
|
+
prefix: coverage
|
|
136
|
+
|
|
137
|
+
build:
|
|
138
|
+
# build should make dist image and prepare docker file
|
|
139
|
+
docker:
|
|
140
|
+
- image: $CIRCLE_NODE_IMG
|
|
141
|
+
|
|
142
|
+
steps:
|
|
143
|
+
- checkout
|
|
144
|
+
- attach_workspace:
|
|
145
|
+
at: ~/project
|
|
146
|
+
|
|
147
|
+
- run:
|
|
148
|
+
name: Setup @leverege Token
|
|
149
|
+
command: echo \${NPMRC} > ~/.npmrc.ro
|
|
150
|
+
|
|
151
|
+
- run:
|
|
152
|
+
name: Determine version number and container name
|
|
153
|
+
command: |
|
|
154
|
+
container="\`node -p \"require('./package.json').leverege.container\"\`"
|
|
155
|
+
if [ "\$container" == "undefined" ];
|
|
156
|
+
then
|
|
157
|
+
container=\$CIRCLE_PROJECT_REPONAME
|
|
158
|
+
fi
|
|
159
|
+
NODE_IMAGE="\`node -p \"require('./package.json').leverege.nodeimg\"\`"
|
|
160
|
+
|
|
161
|
+
echo \$(git describe --tags) > package_version
|
|
162
|
+
echo \${container} > container_name
|
|
163
|
+
echo \${NODE_IMAGE} > node_img
|
|
164
|
+
|
|
165
|
+
- run:
|
|
166
|
+
name: Create Dockerfile and build dist directory
|
|
167
|
+
command: mkdir -p docker && npm run dockerize \$(git describe --tags)
|
|
168
|
+
|
|
169
|
+
- persist_to_workspace:
|
|
170
|
+
root: ~/project
|
|
171
|
+
paths:
|
|
172
|
+
- docker/*
|
|
173
|
+
- package_version
|
|
174
|
+
- container_name
|
|
175
|
+
- node_img
|
|
176
|
+
|
|
177
|
+
workflows:
|
|
178
|
+
version: 2.1
|
|
179
|
+
test-build-deploy:
|
|
180
|
+
jobs:
|
|
181
|
+
- install:
|
|
182
|
+
context: npm
|
|
183
|
+
- security-check:
|
|
184
|
+
requires:
|
|
185
|
+
- install
|
|
186
|
+
- license-check:
|
|
187
|
+
requires:
|
|
188
|
+
- install
|
|
189
|
+
- lint:
|
|
190
|
+
requires:
|
|
191
|
+
- install
|
|
192
|
+
- coverage:
|
|
193
|
+
requires:
|
|
194
|
+
- install
|
|
195
|
+
- docs:
|
|
196
|
+
requires:
|
|
197
|
+
- install
|
|
198
|
+
- build:
|
|
199
|
+
context: npm
|
|
200
|
+
filters:
|
|
201
|
+
branches:
|
|
202
|
+
only:
|
|
203
|
+
- development
|
|
204
|
+
- /release-.*/
|
|
205
|
+
- master
|
|
206
|
+
requires:
|
|
207
|
+
- install
|
|
208
|
+
- security-check
|
|
209
|
+
- license-check
|
|
210
|
+
- lint
|
|
211
|
+
- coverage
|
|
212
|
+
- docs
|
|
213
|
+
|
package/src/firebaseDeploy.mjs
CHANGED
|
@@ -42,14 +42,11 @@ const EXIT_EVENTS = [ 'SIGINT', 'exit', 'uncaughException', 'unhandledRejection'
|
|
|
42
42
|
const [
|
|
43
43
|
firebaserc,
|
|
44
44
|
firebaseJson,
|
|
45
|
-
|
|
45
|
+
git
|
|
46
46
|
] = await Promise.all( [
|
|
47
47
|
fs.exists( path.join( process.cwd(), '.firebaserc' ) ),
|
|
48
48
|
fs.exists( path.join( process.cwd(), 'firebase.json' ) ),
|
|
49
|
-
|
|
50
|
-
.then( ( { stdout } ) => {
|
|
51
|
-
return stdout.split( '\n' )[0]
|
|
52
|
-
} )
|
|
49
|
+
fs.exists( path.join( process.cwd(), '.git/HEAD' ) )
|
|
53
50
|
] )
|
|
54
51
|
|
|
55
52
|
if ( !firebaserc ) {
|
|
@@ -66,6 +63,16 @@ if ( !firebaserc || !firebaseJson ) {
|
|
|
66
63
|
|
|
67
64
|
const firebasercContent = JSON.parse( await fs.readFile( path.join( process.cwd(), '.firebaserc' ), { encoding : 'utf-8' } ) )
|
|
68
65
|
|
|
66
|
+
// If in a git repo, fetch the name of the git branch to use as a default
|
|
67
|
+
// name in case a deployment channel is needed. Examining this file directly
|
|
68
|
+
// is less cumbersome then running an actual git command to fetch the
|
|
69
|
+
// branch name
|
|
70
|
+
let gitBranch
|
|
71
|
+
if ( git ) {
|
|
72
|
+
const gitContent = ( await fs.readFile( path.join( process.cwd(), '.git/HEAD' ), { encoding : 'utf-8' } ) )?.split( '/' )
|
|
73
|
+
gitBranch = gitContent[gitContent?.length - 1]?.trimEnd( '\n' )
|
|
74
|
+
}
|
|
75
|
+
|
|
69
76
|
let maxSiteIdLength = 0
|
|
70
77
|
|
|
71
78
|
const targets = Object
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
geotile-local.yaml
|
package/src/helmdn
CHANGED
|
@@ -94,6 +94,7 @@ function annihilateVelero() {
|
|
|
94
94
|
function helmDown() {
|
|
95
95
|
local namespace=${2:-default}
|
|
96
96
|
local helmdn="helm uninstall $1 -n $namespace"
|
|
97
|
+
printf "Gonna=>[$helmdn]\n"
|
|
97
98
|
eval $helmdn
|
|
98
99
|
postToSlack $helmdn
|
|
99
100
|
}
|
|
@@ -110,15 +111,15 @@ function doNuking() {
|
|
|
110
111
|
;;
|
|
111
112
|
|
|
112
113
|
"elastic"|"elasticsearch")
|
|
113
|
-
|
|
114
|
+
helm uninstall elasticsearch
|
|
114
115
|
;;
|
|
115
116
|
|
|
116
117
|
"estafette"|"preemptible-killer")
|
|
117
|
-
|
|
118
|
+
helm uninstall -n estafette estafette-gke-preemptible-killer
|
|
118
119
|
;;
|
|
119
120
|
|
|
120
121
|
"traefik")
|
|
121
|
-
|
|
122
|
+
helm uninstall -n traefik traefik
|
|
122
123
|
;;
|
|
123
124
|
|
|
124
125
|
"monitoring")
|
|
@@ -157,6 +158,7 @@ NOGRESS
|
|
|
157
158
|
|
|
158
159
|
*)
|
|
159
160
|
helmDown $SERVICE "default"
|
|
161
|
+
#helm -n default uninstall $SERVICE
|
|
160
162
|
esac
|
|
161
163
|
done
|
|
162
164
|
}
|
package/src/helmup
CHANGED
|
@@ -119,7 +119,7 @@ function bootstrapLocalSetup() {
|
|
|
119
119
|
then
|
|
120
120
|
mkdir $SERVICE
|
|
121
121
|
else
|
|
122
|
-
# If the service dir already exists but the
|
|
122
|
+
# If the service dir already exists but the nghelmup.plugin file is missing
|
|
123
123
|
# then this is most likely a legacy setup - for example, an older setup for
|
|
124
124
|
# elasticsearch that only had an es-values.yaml file. Note that we cannot
|
|
125
125
|
# get to this logic if the helmup.plugin file exists so no need to check
|
package/src/k8scale
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
|
|
3
|
+
# Simple ANSI color coded string generator.
|
|
4
|
+
function color() {
|
|
5
|
+
local color=
|
|
6
|
+
case "$1" in
|
|
7
|
+
'g') color="92m" ;; # green
|
|
8
|
+
'c') color="96m" ;; # lt blue
|
|
9
|
+
'y') color="93m" ;; # yellow
|
|
10
|
+
'r') color="91m" ;; # red
|
|
11
|
+
'toast') color="1;3;7;91;103;5m" ;;
|
|
12
|
+
esac
|
|
13
|
+
printf "\e[$color$2\e[0m"
|
|
14
|
+
}
|
|
5
15
|
|
|
6
16
|
GITTOP=`git rev-parse --show-toplevel` && cd $GITTOP
|
|
7
17
|
|
|
8
18
|
overwhelm
|
|
9
19
|
[ $? -ne 0 ] && printf "\n\n***Aborting helmup...\n\n" && exit 1
|
|
10
|
-
GCP_PROJECT_ID="$(getProjectIdFromK8sContext)"
|
|
11
20
|
|
|
12
21
|
REPLICAS=
|
|
13
22
|
DIRECTION=$1 && shift
|
|
@@ -31,6 +40,5 @@ do
|
|
|
31
40
|
kubectl scale --replicas=$REPLICAS deployment $SERVICE &>/dev/null
|
|
32
41
|
[ $? -eq 1 ] && RESULTS="`color r FAILURE`"
|
|
33
42
|
printf " $RESULTS => $SERVICE\n"
|
|
34
|
-
postToSlack "k8scale $DIRECTION $SERVICE"
|
|
35
43
|
done
|
|
36
44
|
printf "\n\n"
|
|
Binary file
|