@leverege/build-tools 2.59.0-beta.3 → 2.59.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leverege/build-tools",
3
- "version": "2.59.0-beta.3",
3
+ "version": "2.59.0",
4
4
  "description": "A collection of build / support tools for Leverege developers",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -27,6 +27,7 @@
27
27
  "encrypt-secrets": "src/encrypt-secrets.sh",
28
28
  "firebaseDeploy": "src/firebaseDeploy.mjs",
29
29
  "firebaseServe": "src/firebaseServe.mjs",
30
+ "generate-docs": "src/generate-docs.mjs",
30
31
  "getfbcfg": "src/getfbcfg.mjs",
31
32
  "getjson": "src/getjson.mjs",
32
33
  "git-tar": "src/git-tar.sh",
@@ -59,8 +60,9 @@
59
60
  "license": "SEE LICENSE IN LICENSE.md",
60
61
  "dependencies": {
61
62
  "@google-cloud/artifact-registry": "^3.5.0",
63
+ "@leverege/jsdoc-template": "^1.0.1",
62
64
  "ansi-colors": "^4.1.3",
63
- "chalk": "^5.3.0",
65
+ "chalk": "^5.4.1",
64
66
  "command-line-args": "^6.0.1",
65
67
  "command-line-usage": "^7.0.3",
66
68
  "deepmerge": "^4.3.1",
@@ -68,8 +70,9 @@
68
70
  "execa": "^9.5.2",
69
71
  "glob": "^11.0.0",
70
72
  "handlebars": "^4.7.8",
71
- "inquirer": "^12.2.0",
73
+ "inquirer": "^12.3.0",
72
74
  "js-yaml": "^4.1.0",
75
+ "jsdoc": "^4.0.4",
73
76
  "ms": "^2.1.3",
74
77
  "npm-registry-fetch": "^18.0.2",
75
78
  "package-up": "^5.0.0",
@@ -78,10 +81,10 @@
78
81
  "readline-sync": "^1.4.10",
79
82
  "semver": "^7.6.3",
80
83
  "simple-git": "^3.27.0",
81
- "zx": "^8.2.4"
84
+ "zx": "^8.3.0"
82
85
  },
83
86
  "devDependencies": {
84
87
  "@leverege/eslint-config-leverege": "^5.0.1",
85
- "npm": "^10.9.2"
88
+ "npm": "^11.0.0"
86
89
  }
87
90
  }
package/src/Docker.mjs CHANGED
@@ -1,6 +1,4 @@
1
1
  import fs from 'node:fs'
2
- import path from 'node:path'
3
- import url from 'node:url'
4
2
 
5
3
  import chalk from 'chalk'
6
4
  import handlebars from 'handlebars'
@@ -15,15 +13,80 @@ import {
15
13
  warning
16
14
  } from './Utils.mjs'
17
15
 
18
- const DIRNAME = path.dirname( url.fileURLToPath( import.meta.url ) )
19
-
20
16
  // TODO: change default to node 22 (jod) after 01/01/25
21
- const dockerfileNodeVersion = process.env.USE_NODEJS_22 ? 'jod-alpine' : 'iron-alpine'
17
+ const dockerfileNodeVersion = 'jod-alpine'
22
18
 
23
19
  // The contents of these variables were initially located in files that live in
24
20
  // the build-tools repository, but it just became simpler to pull the contents
25
21
  // directly into these variables and forego the file loading.
26
22
  //
23
+ const dockerfileTemplate = `
24
+ # Version {{regvers}} @ {{date}}
25
+ #
26
+ # The FROM directive sets the Base Image for subsequent instructions
27
+ FROM node:{{nodeimage}} as intermediate
28
+ ENV NODE_ENV production
29
+ ENV NPM_CONFIG_USERCONFIG /usr/src/app/.npmrc
30
+
31
+ RUN mkdir -p /usr/src/app
32
+ WORKDIR /usr/src/app
33
+
34
+ # Install app dependencies
35
+ COPY ./workspace/ /usr/src/app/
36
+ ENV GRPC_VERBOSITY ERROR
37
+
38
+ # --------------------------------------------------------------
39
+ # copy the ssh keys into place, npm install, and remove them
40
+ # --------------------------------------------------------------
41
+
42
+ # Install packages to install private repos with ssh keys
43
+ COPY ./.npmrc \${NPM_CONFIG_USERCONFIG}
44
+ RUN apk --no-cache add openssh-client && \
45
+ apk --update add --no-cache --virtual build-dep g++ gcc libgcc \\
46
+ libstdc++ linux-headers make {{apkadds}} && \
47
+ npm install -g {{npmVersion}}
48
+
49
+ {{preInstallPluginfile}}
50
+
51
+ # Use SKIP_PREPARE to disable hook-and-release from running
52
+ ENV SKIP_PREPARE=true
53
+
54
+ # Do the clean install and remove the npm token and ssh keys from the image
55
+ RUN npm ci --only=production --no-optional {{npmlogging}} && \
56
+ rm -f \${NPM_CONFIG_USERCONFIG} /root/.ssh/*
57
+
58
+ # --------------------------------------------------------------
59
+ # Docker Final Stage
60
+ # --------------------------------------------------------------
61
+
62
+ FROM node:{{nodeimage}}
63
+ ENV NPM_CONFIG_USERCONFIG /usr/src/app/.npmrc
64
+
65
+ # Copy .npmrc for private registry access for access to any @leverege packages
66
+ COPY ./.npmrc \${NPM_CONFIG_USERCONFIG}
67
+
68
+ # Install tini for PID 1 and replace shell with bash so we can source files
69
+ RUN apk update && \
70
+ apk add --no-cache bash curl tini vim {{apkadds}} && \
71
+ npm install -g {{npmVersion}} && \
72
+ rm /bin/sh && ln -s /bin/bash /bin/sh && \
73
+ mkdir -p /usr/src/app /tmp/levlog && \
74
+ chown node:node /usr/src/app
75
+
76
+ # Pull in the Dockerfile.plugin file here
77
+ {{pluginfile}}
78
+
79
+ # Eliminate the sensitive info from the final stage image
80
+ RUN rm -f \${NPM_CONFIG_USERCONFIG}
81
+
82
+ ENTRYPOINT [ "/sbin/tini", "--" ]
83
+ WORKDIR /usr/src/app
84
+
85
+ COPY --chown=node:node --from=intermediate /usr/src/app /usr/src/app
86
+
87
+ USER {{runuser}}
88
+ COPY ./bashrc /home/node/.bashrc
89
+ CMD [ "/bin/bash", "-c", "source /home/node/.bashrc && node index.js" ]`
27
90
 
28
91
  const pluginTemplate = `
29
92
  # Dockerfile.plugin - optionally extend the service Docker image
@@ -40,16 +103,74 @@ const pluginTemplate = `
40
103
  # footprints small, so adding packages "just because" is not considered
41
104
  # a best practice.
42
105
  `
43
- const dockerfileTemplate = fs.readFileSync( path.join( DIRNAME, './templates/dockerfileTemplate.hbs' ), 'utf8' )
44
- const bashrcTemplate = fs.readFileSync( path.join( DIRNAME, './templates/bashrcTemplate.hbs' ), 'utf8' )
45
- const cloudBuildSteps = fs.readFileSync( path.join( DIRNAME, './templates/cloudBuildSteps.hbs' ), 'utf8' )
106
+
107
+ const bashrcTemplate = `#!/bin/bash
108
+ #
109
+ alias h=history
110
+
111
+ alias ls='ls -CF --color=auto'
112
+ alias ll='ls -lh'
113
+ alias lla='ls -lha'
114
+ alias glep='grep -l -s'
115
+ alias m=less
116
+ alias menv='env | sort | less'
117
+
118
+ alias whatsmyip='wget -qO- ifconfig.co'
119
+
120
+ alias err='wget -q -O- localhost:5111/logLevel/error'
121
+ alias wrn='wget -q -O- localhost:5111/logLevel/warn'
122
+ alias inf='wget -q -O- localhost:5111/logLevel/info'
123
+ alias dbg='wget -q -O- localhost:5111/logLevel/debug'
124
+ alias trc='wget -q -O- localhost:5111/logLevel/trace'
125
+
126
+ socks()
127
+ {
128
+ netstat -ant | awk '{print }' | sort | uniq -c | sort -n
129
+ }
130
+
131
+ cmetrics()
132
+ {
133
+ wget -qO- localhost:5111/metrics
134
+ }
135
+
136
+ cmstat()
137
+ {
138
+ wget -qO- localhost:5111
139
+ }
140
+
141
+ cmclear()
142
+ {
143
+ # Future me - thinking this should call cmstat and pass in the endpoint as
144
+ # a parameter? Well don't do it - without escaping the dollar 1 in cmstat
145
+ # the port will end up being 51111, and escaping causes linting to complain
146
+ # about unnecessary escaping.
147
+ wget -qO- localhost:5111/status/clear
148
+ }
149
+
150
+ dunm() {
151
+ du -sh /usr/src/app/node_modules/* | sort -sh
152
+ }
153
+ `
154
+ const cloudBuildSteps = `
155
+ steps:
156
+ - name: 'gcr.io/cloud-builders/docker'
157
+ args:
158
+ - 'build'
159
+ - '--network=cloudbuild'
160
+ - '-t'
161
+ - '{{imageName}}:{{imageVersion}}'
162
+ - '.'
163
+
164
+ images:
165
+ - '{{imageName}}:{{imageVersion}}'
166
+ `
46
167
 
47
168
  const defaultSettings = {
48
169
  apkadds : '',
49
170
  date : getDateTimestamp(),
50
- nodeimage : process.env.USE_NODEJS_22 ? 'jod-alpine' : 'iron-alpine',
51
- imageBase : process.env.USE_NODEJS_22 ? 'node:jod-alpine' : 'node:iron-alpine',
171
+ nodeimage : 'jod-alpine',
52
172
  npmlogging : process.env.VERBOSE_NPM_LOGGING ? '--ddd' : '--silent',
173
+ npmVersion : 'npm@11',
53
174
  pluginfile : '# NO PLUGIN',
54
175
  preInstallPluginfile : '# NO PRE-INSTALL PLUGIN',
55
176
  regvers : 'package.version',
@@ -75,7 +196,7 @@ const generateDockerfile = ( options ) => {
75
196
  if ( !settings.nodeimage ) {
76
197
  settings.nodeimage = dockerfileNodeVersion
77
198
  }
78
- settings.image = settings.imageBase || `node:${settings.nodeimage}`
199
+
79
200
  // Ensure the presence of the docker dir with plugin and bashrc - this code
80
201
  // could probably be tightened up a little.
81
202
  try {
package/src/Utils.mjs CHANGED
@@ -1,4 +1,6 @@
1
1
  import { existsSync, readdirSync, readFileSync } from 'node:fs'
2
+ import path from 'node:path'
3
+ import url from 'node:url'
2
4
 
3
5
  import chalk from 'chalk'
4
6
  import { $ } from 'execa'
@@ -7,6 +9,10 @@ import { glob } from 'glob'
7
9
  import { packageUp } from 'package-up'
8
10
  import YAML from 'js-yaml'
9
11
 
12
+ // __dirname goes away with ESM so we take this approach instead and
13
+ // this assumes this file lives in the src dir of the build-tools repo
14
+ export const BUILD_TOOLS_ROOT = path.dirname( url.fileURLToPath( import.meta.url ) )
15
+
10
16
  let debugEnabled = process.env.BUILD_TOOLS_DEBUG === '1'
11
17
 
12
18
  export const enableDebug = () => { debugEnabled = true }
@@ -471,7 +477,7 @@ export const analyzeRepository = async ( giveGuidance ) => {
471
477
  await shellCmd( 'npm run build' )
472
478
  }
473
479
 
474
- const buildToolsVersion = closestPackageJson.devDependencies['@leverege/build-tools']
480
+ const buildToolsVersion = closestPackageJson.devDependencies['@leverege/build-tools'] || closestPackageJson.dependencies['@leverege/build-tools']
475
481
  if ( !buildToolsVersion ) {
476
482
  errorExit( 'Error: missing devDependency for @leverege/build-tools in package.json' )
477
483
  }
package/src/circleate.sh CHANGED
@@ -128,7 +128,7 @@ jobs:
128
128
  at: ~/project
129
129
  - run:
130
130
  name: Generate docs
131
- command: npx jsdoc -r src -R README.md -d docs
131
+ command: npm run docs
132
132
  - store_artifacts:
133
133
  path: docs
134
134
  prefix: docs
@@ -347,7 +347,7 @@ jobs:
347
347
  at: ~/project
348
348
  - run:
349
349
  name: Generate docs
350
- command: npx jsdoc -r src -R README.md -d docs
350
+ command: npm run docs
351
351
  - store_artifacts:
352
352
  path: docs
353
353
  prefix: docs
@@ -96,8 +96,6 @@ if ( semver.lt( semver.coerce( repoDescr.buildToolsVersion ), minimumBuildToolsV
96
96
 
97
97
  const dockerInfo = await docker.generateDockerfile( {
98
98
  regvers : repoDescr.packageVersion,
99
- imageBase : repoDescr.closestPackageJson.leverege?.imageBase,
100
- buildEnv : repoDescr.closestPackageJson.leverege?.buildEnv || 'alpine',
101
99
  nodeimage : repoDescr.closestPackageJson.leverege?.nodeimg, // left as nodeimg in package.json for backwards compat
102
100
  } )
103
101
  debug( { dockerInfo }, '<==The Docker Info' )
@@ -218,13 +216,13 @@ log( `
218
216
  NPM Workspace: ${chalk.green.bold( isNpmWorkspace )}
219
217
 
220
218
  ${chalk.green.bold( 'Docker Information:' )}
221
- NodeImage: ${chalk.green.bold( dockerInfo.imageBase || `node:${dockerInfo.nodeimage}` )}
222
- Docker Env: ${chalk.green.bold( dockerInfo.buildEnv || 'alpine' )}
219
+ NodeImage: ${chalk.green.bold( dockerInfo.nodeimage )}
223
220
  AddedPkgs: ${chalk.green.bold( dockerInfo.apkadds )}
224
221
  Run User: ${chalk.green.bold( dockerInfo.runuser )}
225
222
  Previous: ${chalk.yellow.bold( dockerInfo.previousBuild )}
226
223
  DateStamp: ${chalk.green.bold( dockerInfo.date )}
227
224
  NPM Logs: ${chalk.green.bold( dockerInfo.npmlogging )}
225
+ NPM Version: ${chalk.green.bold( dockerInfo.npmVersion )}
228
226
  ` )
229
227
 
230
228
  if ( imageVersion !== packageVersion ) {
@@ -0,0 +1,41 @@
1
+ {
2
+ "tags": {
3
+ "allowUnknownTags": false
4
+ },
5
+ "source": {
6
+ "includePattern": "\\.(js|mjs|jsx)$",
7
+ "excludePattern": "(node_modules/|docs)"
8
+ },
9
+ "plugins": [],
10
+ "templates": {
11
+ "cleverLinks": true,
12
+ "monospaceLinks": false,
13
+ "preserveDescriptions": true,
14
+ "default": {
15
+ "useLongnameInNav": true,
16
+ "outputSourceFiles": false
17
+ }
18
+ },
19
+ "opts": {
20
+ "encoding": "utf8",
21
+ "lenient": false,
22
+ "markdown": true
23
+ },
24
+ "docdash": {
25
+ "static": true,
26
+ "sort": false,
27
+ "search": true,
28
+ "collapse": true,
29
+ "typedefs": true,
30
+ "removeQuotes": "none",
31
+ "scripts": [],
32
+ "menu":{
33
+ "Bitbucket": {
34
+ "href":"https://bitbucket.org/leverege/IF_THIS_MAKES_SENSE",
35
+ "target":"_blank",
36
+ "class":"menu-item",
37
+ "id":"repository"
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+ /*
3
+ * Encapsulates the rather lengthy jsdoc / md docs npm script:
4
+ *
5
+ * npx jsdoc -c ./jsdoc.json -R README.md -d docs src && \
6
+ * mkdir -p docs/md && \
7
+ * npx --package=jsdoc-to-markdown jsdoc2md --files src/*.js --configure ./jsdoc.json > docs/md/API.md
8
+ *
9
+ */
10
+ import fs from 'node:fs'
11
+
12
+ import {
13
+ BUILD_TOOLS_ROOT,
14
+ debug,
15
+ err,
16
+ getRepositoryDescr,
17
+ shellCmd,
18
+ } from './Utils.mjs'
19
+
20
+ const jsdocConfig = `${BUILD_TOOLS_ROOT}/generate-docs-conf.json`
21
+
22
+ // build the location of the template file from the build-tools root
23
+ // in order to avoid hardcoding in the jsdoc config file - this is
24
+ // important in order to support running generate-docs from a user's
25
+ // laptop or deployed to the doc-creator service on k8s
26
+ const jsdocTemplate = `${BUILD_TOOLS_ROOT}/../../jsdoc-template`
27
+
28
+ if ( !fs.existsSync( jsdocConfig ) ) { // eslint-disable-line security/detect-non-literal-fs-filename
29
+ err( `cannot find the jsdoc config file: ${jsdocConfig}` )
30
+ process.exit( 1 )
31
+ }
32
+
33
+ const repoDescr = await getRepositoryDescr()
34
+
35
+ debug( { jsdocConfig, repoDescr }, '<==The Repo' )
36
+
37
+ // blow away any existing docs before recreating the docs dir
38
+ if ( fs.existsSync( 'docs' ) ) {
39
+ fs.rmSync( 'docs', { recursive : true } )
40
+ }
41
+ fs.mkdirSync( 'docs/md', { recursive : true } )
42
+
43
+ try {
44
+ await shellCmd( `npx --yes jsdoc -c ${jsdocConfig} -t ${jsdocTemplate} -R README.md -d docs src` )
45
+ await shellCmd(
46
+ `npx --yes --package=jsdoc-to-markdown jsdoc2md --files src/*.js --configure ${jsdocConfig}`,
47
+ { stdout : { file : 'docs/md/API.md' } }
48
+ )
49
+ } catch ( error ) {
50
+ err( error )
51
+ }
@@ -2,6 +2,13 @@
2
2
  #
3
3
  # See => https://cloudnative-pg.io/documentation/current/installation_upgrade/
4
4
  #
5
+ OPVER="1.25.0"
6
+
7
+ createNamespaceIfNeeded cnpg-system
8
+
9
+ kubectl apply --server-side -f \
10
+ https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-${OPVER%.*}/releases/cnpg-${OPVER}.yaml $K8S_WHAT
11
+
5
12
  # Legacy terraformed clusters (like sandbox) may need a special firewall rule
6
13
  # added to the network layer on k8s. It should look like this:
7
14
  #
@@ -9,13 +16,6 @@
9
16
  # Ports : 8000,9443 <= kubectl cnpg status and webhooks
10
17
  # Filters: 172.16.0.0/28 <= k8s control plane
11
18
  #
12
- OPVER="1.24.1"
13
-
14
- createNamespaceIfNeeded cnpg-system
15
-
16
- kubectl apply --server-side -f \
17
- https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-${OPVER%.*}/releases/cnpg-${OPVER}.yaml $K8S_WHAT
18
-
19
19
  # Old approach used the helm chart.
20
20
  #
21
21
  #addHelmRepo cnpg https://cloudnative-pg.github.io/charts
@@ -2,7 +2,7 @@
2
2
  #
3
3
  showInstalling "Elastic Search 8"
4
4
 
5
- [ -z "$ELASTIC_CHART_VERSION" ] && ELASTIC_CHART_VERSION="21.3.22"
5
+ [ -z "$ELASTIC_CHART_VERSION" ] && ELASTIC_CHART_VERSION="21.4.1"
6
6
 
7
7
  OCI_CHART="oci://registry-1.docker.io/bitnamicharts/elasticsearch"
8
8
 
@@ -4,7 +4,7 @@ showInstalling "The Prometheus Operator and Components"
4
4
  addHelmRepo prometheus-community https://prometheus-community.github.io/helm-charts
5
5
 
6
6
  showInstalling "The Prometheus Operator (kube-prometheus-stack)"
7
- [ -z "$PROMETHEUS_STACK_CHART_VERSION" ] && PROMETHEUS_STACK_CHART_VERSION="66"
7
+ [ -z "$PROMETHEUS_STACK_CHART_VERSION" ] && PROMETHEUS_STACK_CHART_VERSION="67"
8
8
 
9
9
  NS="--namespace prometheus"
10
10
 
@@ -4,7 +4,7 @@ showInstalling "Redis"
4
4
 
5
5
  OCI_CHART="oci://registry-1.docker.io/bitnamicharts/redis"
6
6
 
7
- [ -z "$REDIS_CHART_VERSION" ] && REDIS_CHART_VERSION="20.3.0"
7
+ [ -z "$REDIS_CHART_VERSION" ] && REDIS_CHART_VERSION="20.6.0"
8
8
 
9
9
  helm upgrade --install redis $OCI_CHART \
10
10
  --values redis/redis-local.yaml \
@@ -4,7 +4,7 @@ showInstalling "Velero Backup System"
4
4
 
5
5
  addHelmRepo vmware-tanzu https://vmware-tanzu.github.io/helm-charts
6
6
 
7
- [ -z "$VELERO_CHART_VERSION" ] && VELERO_CHART_VERSION="7"
7
+ [ -z "$VELERO_CHART_VERSION" ] && VELERO_CHART_VERSION="8"
8
8
  #
9
9
  # Build the bucket, region and SA email variables and use --set to mod the
10
10
  # chart values as opposed to using an OVH:<label> approach. This eliminates
package/src/helmup.sh CHANGED
@@ -578,8 +578,35 @@ function installCnpgOperatorEnvironment() {
578
578
  CNPG_SVC_ACCT="$CNPG_NAMESPACE-sa"
579
579
  CNPG_SVC_EMAIL="$CNPG_SVC_ACCT@$GCP_PROJECT_ID.iam.gserviceaccount.com"
580
580
 
581
- kubectl delete serviceaccounts -n $CNPG_NAMESPACE $CNPG_SVC_ACCT &> $DEVNULL
582
- gcloud --quiet iam service-accounts delete $CNPG_SVC_EMAIL --project $GCP_PROJECT_ID&> $DEVNULL
581
+ # We used to delete the SA when we were doing clean installs but that bit
582
+ # me in the ass the time I moved the operator dir out of the way to run
583
+ # helmwhat to populate with latest operator version. The result? The SA
584
+ # was deleted and recreated and the existing system lost the ability to
585
+ # write to GCS which resulted in WAL failures. The deletion / recreation
586
+ # logic was only useful in the early days of creating / deleting for
587
+ # initial development.
588
+ #
589
+ # Synopsis: deleting an SA from an actual non-test system is BAD NEWS
590
+ # and if it happens then you will need to rebind the SA to
591
+ # workload identity by hand.
592
+ #
593
+ # kubectl delete serviceaccounts -n $CNPG_NAMESPACE $CNPG_SVC_ACCT &> $DEVNULL
594
+ # gcloud --quiet iam service-accounts delete $CNPG_SVC_EMAIL --project $GCP_PROJECT_ID&> $DEVNULL
595
+ kubectl describe serviceaccounts -n $CNPG_NAMESPACE $CNPG_SVC_ACCT &> $DEVNULL
596
+ if [ $? -eq 0 ];
597
+ then
598
+ cat<<SKIP_CNPG_SA_CREATION
599
+
600
+ $YELO_WARN The CNPG SA $CNPG_SVC_ACCT already exists
601
+
602
+ Deleting the SA for the purposes of upgrading the operator is going to
603
+ wreck someone's day (probably yours) if the desire is to simply upgrade
604
+ in place. To force a clean reinstall, delete both the k8s and gcp SA for
605
+ CNPG and try again. (see comments in helmup for more info)
606
+
607
+ SKIP_CNPG_SA_CREATION
608
+ return
609
+ fi
583
610
 
584
611
  # Create the operands namespace and annotate to allow redis access
585
612
  createNamespaceIfNeeded $CNPG_NAMESPACE
@@ -699,10 +726,10 @@ function installVeleroEnvironment() {
699
726
  gcloud config set project $GCP_PROJECT_ID
700
727
 
701
728
  ## The major chart version will determine the bucket suffix
702
- [ -z "$VELERO_HELM_CHART" ] && VELERO_HELM_CHART="7"
729
+ [ -z "$VELERO_CHART_VERSION" ] && VELERO_CHART_VERSION="8"
703
730
 
704
731
  ## Create a bucket
705
- BUCKET="$GCP_PROJECT_ID-velero-$VELERO_HELM_CHART"
732
+ BUCKET="$GCP_PROJECT_ID-velero-$VELERO_CHART_VERSION"
706
733
  printf "\nCreating storage bucket `color g $BUCKET` in `color g $GCE_REGION`\n"
707
734
  gsutil mb -l $GCE_REGION gs://$BUCKET/ &> $DEVNULL
708
735
  warnOnError $? "Bucket failed to create or already exists - go check it\n"
@@ -1,46 +0,0 @@
1
- #!/bin/bash
2
- #
3
- alias h=history
4
-
5
- alias ls='ls -CF --color=auto'
6
- alias ll='ls -lh'
7
- alias lla='ls -lha'
8
- alias glep='grep -l -s'
9
- alias m=less
10
- alias menv='env | sort | less'
11
-
12
- alias whatsmyip='wget -qO- ifconfig.co'
13
-
14
- alias err='wget -q -O- localhost:5111/logLevel/error'
15
- alias wrn='wget -q -O- localhost:5111/logLevel/warn'
16
- alias inf='wget -q -O- localhost:5111/logLevel/info'
17
- alias dbg='wget -q -O- localhost:5111/logLevel/debug'
18
- alias trc='wget -q -O- localhost:5111/logLevel/trace'
19
-
20
- socks()
21
- {
22
- netstat -ant | awk '{print }' | sort | uniq -c | sort -n
23
- }
24
-
25
- cmetrics()
26
- {
27
- wget -qO- localhost:5111/metrics
28
- }
29
-
30
- cmstat()
31
- {
32
- wget -qO- localhost:5111
33
- }
34
-
35
- cmclear()
36
- {
37
- # Future me - thinking this should call cmstat and pass in the endpoint as
38
- # a parameter? Well don't do it - without escaping the dollar 1 in cmstat
39
- # the port will end up being 51111, and escaping causes linting to complain
40
- # about unnecessary escaping.
41
- wget -qO- localhost:5111/status/clear
42
- }
43
-
44
- dunm() {
45
- du -sh /usr/src/app/node_modules/* | sort -sh
46
- }
@@ -1,13 +0,0 @@
1
- steps:
2
- - name: 'gcr.io/cloud-builders/docker'
3
- args:
4
- - 'build'
5
- - '--network=cloudbuild'
6
- - '-t'
7
- - '{{imageName}}:{{imageVersion}}'
8
- - '--cache-from'
9
- - '{{imageName}}:{{imageVersion}}'
10
- - '.'
11
-
12
- images:
13
- - '{{imageName}}:{{imageVersion}}'
@@ -1,86 +0,0 @@
1
- # Version {{regvers}} @ {{date}}
2
-
3
- # The FROM directive sets the Base Image for subsequent instructions
4
- FROM {{image}} as intermediate
5
-
6
- ARG BUILD_ENV="{{buildEnv}}"
7
-
8
- ENV NODE_ENV production
9
- ENV NPM_CONFIG_USERCONFIG /usr/src/app/.npmrc
10
-
11
- RUN mkdir -p /usr/src/app
12
- WORKDIR /usr/src/app
13
-
14
- # Install app dependencies
15
- COPY ./workspace/ /usr/src/app/
16
- ENV GRPC_VERBOSITY ERROR
17
-
18
- # --------------------------------------------------------------
19
- # copy the ssh keys into place, npm install, and remove them
20
- # --------------------------------------------------------------
21
-
22
- # Install packages to install private repos with ssh keys
23
- COPY ./.npmrc ${NPM_CONFIG_USERCONFIG}
24
-
25
- RUN if [ "${BUILD_ENV}" = "debian" ]; then \
26
- apt-get update && \
27
- apt-get install -y openssh-client build-essential && \
28
- npm install -g npm@10; \
29
- else \
30
- apk --no-cache add openssh-client && \
31
- apk --update add --no-cache --virtual build-dep g++ gcc libgcc libstdc++ linux-headers make {{apkadds}} && \
32
- npm install -g npm@10; \
33
- fi
34
-
35
- # Use SKIP_PREPARE to disable hook-and-release from running
36
- ENV SKIP_PREPARE=true
37
-
38
- {{preInstallPluginfile}}
39
-
40
- # Do the clean install and remove the npm token and ssh keys from the image
41
- RUN npm ci --only=production --no-optional {{npmlogging}} && \
42
- rm -f ${NPM_CONFIG_USERCONFIG} /root/.ssh/*
43
-
44
- # --------------------------------------------------------------
45
- # Docker Final Stage
46
- # --------------------------------------------------------------
47
-
48
- FROM {{image}}
49
-
50
- ARG BUILD_ENV="{{buildEnv}}"
51
-
52
- ENV NPM_CONFIG_USERCONFIG /usr/src/app/.npmrc
53
-
54
- # Copy .npmrc for private registry access for access to any @leverege packages
55
- COPY ./.npmrc ${NPM_CONFIG_USERCONFIG}
56
-
57
- # Install tini for PID 1 and replace shell with bash so we can source files
58
- RUN if [ "$BUILD_ENV" = "debian" ]; then \
59
- apt-get update && \
60
- apt-get install -y tini bash curl vim {{apkadds}} && \
61
- npm install -g npm@10 && \
62
- rm /bin/sh && ln -s /bin/bash /bin/sh && \
63
- mkdir -p /usr/src/app /tmp/levlog && chown node:node /usr/src/app; \
64
- else \
65
- apk update && \
66
- apk add --no-cache bash curl tini vim {{apkadds}} && \
67
- npm install -g npm@10 && \
68
- rm /bin/sh && ln -s /bin/bash /bin/sh && \
69
- mkdir -p /usr/src/app /tmp/levlog && chown node:node /usr/src/app; \
70
- fi
71
-
72
-
73
- # Pull in the Dockerfile.plugin file here
74
- {{pluginfile}}
75
-
76
- # Eliminate the sensitive info from the final stage image
77
- RUN rm -f ${NPM_CONFIG_USERCONFIG}
78
-
79
- ENTRYPOINT [ "tini", "--" ]
80
- WORKDIR /usr/src/app
81
-
82
- COPY --chown=node:node --from=intermediate /usr/src/app /usr/src/app
83
-
84
- USER {{runuser}}
85
- COPY ./bashrc /home/node/.bashrc
86
- CMD [ "/bin/bash", "-c", "source /home/node/.bashrc && node index.js" ]