From 070b9e1e85c5e7a2ba62a25880f7b3c27575aff9 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 22 Mar 2022 19:10:50 +0100 Subject: [PATCH 001/562] oas configurable proxy initial --- tools/oas-configurable-proxy/README.md | 0 tools/oas-configurable-proxy/index.js | 60 ++++ .../oas-configurable-proxy/package-lock.json | 331 ++++++++++++++++++ tools/oas-configurable-proxy/package.json | 15 + .../proxy.yaml.handlebars | 10 + .../test/example/apigeemock.yaml | 158 +++++++++ 6 files changed, 574 insertions(+) create mode 100644 tools/oas-configurable-proxy/README.md create mode 100644 tools/oas-configurable-proxy/index.js create mode 100644 tools/oas-configurable-proxy/package-lock.json create mode 100644 tools/oas-configurable-proxy/package.json create mode 100644 tools/oas-configurable-proxy/proxy.yaml.handlebars create mode 100644 tools/oas-configurable-proxy/test/example/apigeemock.yaml diff --git a/tools/oas-configurable-proxy/README.md b/tools/oas-configurable-proxy/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/tools/oas-configurable-proxy/index.js b/tools/oas-configurable-proxy/index.js new file mode 100644 index 000000000..54435e8cd --- /dev/null +++ b/tools/oas-configurable-proxy/index.js @@ -0,0 +1,60 @@ +const SwaggerParser = require("@apidevtools/swagger-parser"); +const minimist = require('minimist') +const fs = require('fs') +const path = require('path'); +const handlebars = require("handlebars"); + +/** + * + * @param {String} outFolder Path of configurable proxy archive + * @param {*} oasPath Path to OAS file + */ +async function generateFromOAS(outFolder, oasPath) { + try { + const api = await SwaggerParser.validate(oasPath); + const proxyName = api.info.title.replace(/ /g, '-').toLowerCase(); + const proxyFolder = path.join(outFolder, "src", "main", "apigee", "apiproxies", proxyName) + _createFolderIfNotExists(proxyFolder) + + const template = handlebars.compile(fs.readFileSync("./proxy.yaml.handlebars").toString()); + + const schema = Array.isArray(api.schemes) && api.schemes.includes('https') ? 'https' : 'http'; + const hostName = api.host || 'notfound.apigee.google.com # TODO replace me' + const operations = []; + for (const [requestPath, pathObject] of Object.entries(api.paths || {})) { + for (const [method, pathItem] of Object.entries(pathObject || {})) { + operations.push({ + id: `${method}-${pathItem.operationId.replace(/ /g, '-').toLowerCase()}`, + httpMethod: method.toUpperCase(), + requestPath: requestPath + }) + } + } + data = { + basepath: '/foo', + operations: operations, + target: `${schema}://${hostName}` + } + const generatedProxyConfig = template(data) + fs.writeFileSync(path.join(proxyFolder, "proxy.yaml"), generatedProxyConfig) + } + catch (err) { + console.error(err); + } +} + +function _createFolderIfNotExists(folderPath) { + if (!fs.existsSync(folderPath)) { + fs.mkdirSync(folderPath, { recursive: true }) + } +} + +function ensureFolderStructure(rootFolder) { + _createFolderIfNotExists(rootFolder) + _createFolderIfNotExists(path.join(rootFolder, "src", "main", "apigee", "environments")) +} + +const argv = minimist(process.argv.slice(2)); +const outFolder = argv['out'] || './generated' +ensureFolderStructure(outFolder); +generateFromOAS(outFolder, argv['oas']); \ No newline at end of file diff --git a/tools/oas-configurable-proxy/package-lock.json b/tools/oas-configurable-proxy/package-lock.json new file mode 100644 index 000000000..2fded1036 --- /dev/null +++ b/tools/oas-configurable-proxy/package-lock.json @@ -0,0 +1,331 @@ +{ + "name": "oas-configurable-proxy", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "dependencies": { + "@apidevtools/swagger-parser": "^10.0.3", + "handlebars": "^4.7.7", + "minimist": "^1.2.6" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", + "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/openapi-types": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-10.0.0.tgz", + "integrity": "sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==", + "peer": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", + "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "node_modules/z-schema": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.2.tgz", + "integrity": "sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw==", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^2.7.1" + } + } + }, + "dependencies": { + "@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "requires": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, + "@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==" + }, + "@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + }, + "@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "requires": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + } + }, + "@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + }, + "@types/json-schema": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", + "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==" + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "openapi-types": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-10.0.0.tgz", + "integrity": "sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==", + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-js": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", + "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "optional": true + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "z-schema": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.2.tgz", + "integrity": "sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw==", + "requires": { + "commander": "^2.7.1", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + } + } + } +} diff --git a/tools/oas-configurable-proxy/package.json b/tools/oas-configurable-proxy/package.json new file mode 100644 index 000000000..223c5d55e --- /dev/null +++ b/tools/oas-configurable-proxy/package.json @@ -0,0 +1,15 @@ +{ + "name": "oas-configurable-proxy", + "version": "1.0.0", + "description": "Generates Apigee Configurable Proxy Envs from Swagger Specs", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "danistrebel", + "dependencies": { + "@apidevtools/swagger-parser": "^10.0.3", + "handlebars": "^4.7.7", + "minimist": "^1.2.6" + } +} diff --git a/tools/oas-configurable-proxy/proxy.yaml.handlebars b/tools/oas-configurable-proxy/proxy.yaml.handlebars new file mode 100644 index 000000000..412c1115e --- /dev/null +++ b/tools/oas-configurable-proxy/proxy.yaml.handlebars @@ -0,0 +1,10 @@ +basepath: "{{basepath}}" +operations: +{{#each operations}} +- id: {{this.id}} + http_match: + - path_template: "{{this.requestPath}}" + method: {{this.httpMethod}} +{{/each}} +target: + uri: "{{target}}" \ No newline at end of file diff --git a/tools/oas-configurable-proxy/test/example/apigeemock.yaml b/tools/oas-configurable-proxy/test/example/apigeemock.yaml new file mode 100644 index 000000000..a0fc52cb3 --- /dev/null +++ b/tools/oas-configurable-proxy/test/example/apigeemock.yaml @@ -0,0 +1,158 @@ +swagger: '2.0' +info: + description: 'OpenAPI Specification for the Apigee mock target service endpoint.' + version: 1.0.0 + title: Mock Target API +host: mocktarget.apigee.net +schemes: + - http + - https +securityDefinitions: + basicAuth: + type: basic + description: HTTP Basic Authentication. +paths: + /: + get: + summary: View personalized greeting + operationId: View a personalized greeting + description: View a personalized greeting for the specified or guest user. + produces: + - text/plain + parameters: + - name: user + in: query + description: Your user name. + required: false + type: string + responses: + '200': + description: Success + /help: + get: + summary: Get help + operationId: Get help + description: View help information about available resources in HTML format. + produces: + - text/html + responses: + '200': + description: Success + /user: + get: + summary: View personalized greeting + operationId: View personalized greeting + description: View a personalized greeting for the specified or guest user. + produces: + - text/plain + parameters: + - name: user + in: query + description: Your user name. + required: false + type: string + responses: + '200': + description: Success + /iloveapis: + get: + summary: View API affirmation + operationId: View API affirmation + description: View API affirmation in HTML format. + produces: + - text/html + responses: + '200': + description: Success + /ip: + get: + summary: View IP address + operationId: View IP address + description: View the IP address of the client in JSON format. + produces: + - application/json + responses: + '200': + description: Success + /xml: + get: + summary: View XML response + operationId: View XML response + description: View a sample response in XML format. + produces: + - application/xml + responses: + '200': + description: Success + /json: + get: + summary: View JSON response + operationId: View JSON response + description: View a sample response in JSON format. + produces: + - application/json + responses: + '200': + description: Success + /echo: + get: + summary: View request headers and body + operationId: View request headers and body + description: View the request headers and body in JSON format. + produces: + - application/json + responses: + '200': + description: Success + post: + summary: Send request and view request headers and body + produces: + - application/json + - application/xml + - application/x-www-form-urlencoded + operationId: Send request and view request headers and body + description: 'Send a request and view the resulting request headers and body in JSON format.

The request payload can be specified using one of the following formats: application/json, application/x-www-form-urlencoded, or application/xml.' + parameters: + - name: body + in: body + description: 'Request payload in application/json, application/x-www-form-urlencoded, or application/xml format.' + required: true + schema: + $ref: '#/definitions/request-body' + responses: + '200': + description: Success + /statuscode/{code}: + get: + summary: View status code and message + operationId: View status code and message + description: View status code and message for the specified value. + produces: + - application/json + parameters: + - name: code + in: path + description: HTTP status code. + required: true + type: string + responses: + '200': + description: Success + /auth: + get: + security: + - basicAuth: [] + summary: Validate access using basic authentication + operationId: Validate access using basic authentication + description: Validate access using basic authentication. + produces: + - application/json + responses: + '200': + description: Success +definitions: + request-body: + properties: + replace-me: + type: object + description: 'Replace with request payload in application/json, application/x-www-form-urlencoded, or application/xml format.' \ No newline at end of file From 51ee96ba3972d369178566bd60a3326e36da9afe Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 23 Mar 2022 17:39:44 +0100 Subject: [PATCH 002/562] configurable proxy generator for OAS 2 and 3 --- tools/oas-configurable-proxy/index.js | 79 +++++++--- .../proxy.yaml.handlebars | 2 +- .../{apigeemock.yaml => apigeemock-v2.yaml} | 0 .../test/example/apigeemock-v3.yaml | 144 ++++++++++++++++++ 4 files changed, 200 insertions(+), 25 deletions(-) rename tools/oas-configurable-proxy/test/example/{apigeemock.yaml => apigeemock-v2.yaml} (100%) create mode 100644 tools/oas-configurable-proxy/test/example/apigeemock-v3.yaml diff --git a/tools/oas-configurable-proxy/index.js b/tools/oas-configurable-proxy/index.js index 54435e8cd..b97aef518 100644 --- a/tools/oas-configurable-proxy/index.js +++ b/tools/oas-configurable-proxy/index.js @@ -1,25 +1,36 @@ -const SwaggerParser = require("@apidevtools/swagger-parser"); +const SwaggerParser = require('@apidevtools/swagger-parser'); const minimist = require('minimist') const fs = require('fs') const path = require('path'); -const handlebars = require("handlebars"); +const handlebars = require('handlebars'); /** + * Generate Proxy Config from OAS * - * @param {String} outFolder Path of configurable proxy archive - * @param {*} oasPath Path to OAS file + * @param {Object} config OAS generator config */ -async function generateFromOAS(outFolder, oasPath) { +async function generateFromOAS(config) { try { - const api = await SwaggerParser.validate(oasPath); - const proxyName = api.info.title.replace(/ /g, '-').toLowerCase(); - const proxyFolder = path.join(outFolder, "src", "main", "apigee", "apiproxies", proxyName) - _createFolderIfNotExists(proxyFolder) + const api = await SwaggerParser.validate(config.oasPath); + api.openapi + const oasVersionString = api.openapi || api.swagger; + const oasVersionSplit = oasVersionString.split("."); + const oasVersionMajor = parseInt(oasVersionSplit[0], 10); + const proxyName = config.name || api.info.title.replace(/ /g, '-').toLowerCase(); + const proxyFolder = path.join(outFolder, 'src', 'main', 'apigee', 'apiproxies', proxyName) + const basepath = config.basepath || `/${proxyName}/v1` + createFolderIfNotExists(proxyFolder) - const template = handlebars.compile(fs.readFileSync("./proxy.yaml.handlebars").toString()); + const template = handlebars.compile(fs.readFileSync('./proxy.yaml.handlebars').toString()); + let targetService = 'https://notfound.apigee.google.com # TODO replace me' + if (oasVersionMajor === 2 && api.host) { + const schema = Array.isArray(api.schemes) && api.schemes.includes('https') ? 'https' : 'http'; + const basePath = api.basePath || '' + targetService = `${schema}://${api.host}${basePath}` + } else if (oasVersionMajor === 3 && api.servers) { + targetService = `${api.servers[0].url}` + } - const schema = Array.isArray(api.schemes) && api.schemes.includes('https') ? 'https' : 'http'; - const hostName = api.host || 'notfound.apigee.google.com # TODO replace me' const operations = []; for (const [requestPath, pathObject] of Object.entries(api.paths || {})) { for (const [method, pathItem] of Object.entries(pathObject || {})) { @@ -31,30 +42,50 @@ async function generateFromOAS(outFolder, oasPath) { } } data = { - basepath: '/foo', - operations: operations, - target: `${schema}://${hostName}` + basepath, + operations, + targetService } const generatedProxyConfig = template(data) - fs.writeFileSync(path.join(proxyFolder, "proxy.yaml"), generatedProxyConfig) + fs.writeFileSync(path.join(proxyFolder, 'proxy.yaml'), generatedProxyConfig); + + const envs = (config.envs || '').split(',') + envs.forEach(env => { + const envFolder = path.join(outFolder, 'src', 'main', 'apigee', 'environments', env); + createFolderIfNotExists(envFolder); + const envDeployments = path.join(envFolder, "deployments.json"); + let deployments = { proxies: [] } + if (fs.existsSync(envDeployments)) { + deployments = JSON.parse(fs.readFileSync(envDeployments)) + } + const uniqueProxies = new Set(deployments.proxies); + uniqueProxies.add(proxyName); + deployments.proxies = [ ...uniqueProxies ]; + fs.writeFileSync(envDeployments, JSON.stringify(deployments, null, 2)); + }); } catch (err) { console.error(err); } } -function _createFolderIfNotExists(folderPath) { +/** + * Create a folder recursively if it doesn't exist + * + * @param {string} folderPath + */ +function createFolderIfNotExists(folderPath) { if (!fs.existsSync(folderPath)) { fs.mkdirSync(folderPath, { recursive: true }) } } -function ensureFolderStructure(rootFolder) { - _createFolderIfNotExists(rootFolder) - _createFolderIfNotExists(path.join(rootFolder, "src", "main", "apigee", "environments")) -} - const argv = minimist(process.argv.slice(2)); +console.log(argv) const outFolder = argv['out'] || './generated' -ensureFolderStructure(outFolder); -generateFromOAS(outFolder, argv['oas']); \ No newline at end of file +const oasPath = argv['oas'] +const basepath = argv['basepath'] +const name = argv['name'] +const envs = argv['envs'] +createFolderIfNotExists(outFolder) +generateFromOAS({outFolder, oasPath, basepath, name, envs}); \ No newline at end of file diff --git a/tools/oas-configurable-proxy/proxy.yaml.handlebars b/tools/oas-configurable-proxy/proxy.yaml.handlebars index 412c1115e..b199ad578 100644 --- a/tools/oas-configurable-proxy/proxy.yaml.handlebars +++ b/tools/oas-configurable-proxy/proxy.yaml.handlebars @@ -7,4 +7,4 @@ operations: method: {{this.httpMethod}} {{/each}} target: - uri: "{{target}}" \ No newline at end of file + uri: "{{targetService}}" \ No newline at end of file diff --git a/tools/oas-configurable-proxy/test/example/apigeemock.yaml b/tools/oas-configurable-proxy/test/example/apigeemock-v2.yaml similarity index 100% rename from tools/oas-configurable-proxy/test/example/apigeemock.yaml rename to tools/oas-configurable-proxy/test/example/apigeemock-v2.yaml diff --git a/tools/oas-configurable-proxy/test/example/apigeemock-v3.yaml b/tools/oas-configurable-proxy/test/example/apigeemock-v3.yaml new file mode 100644 index 000000000..ab73985c1 --- /dev/null +++ b/tools/oas-configurable-proxy/test/example/apigeemock-v3.yaml @@ -0,0 +1,144 @@ +openapi: 3.0.0 +info: + description: OpenAPI Specification for the Apigee mock target service endpoint. + version: 1.0.0 + title: Mock Target API +paths: + /: + get: + summary: View personalized greeting + operationId: View a personalized greeting + description: View a personalized greeting for the specified or guest user. + parameters: + - name: user + in: query + description: Your user name. + required: false + schema: + type: string + responses: + "200": + description: Success + /help: + get: + summary: Get help + operationId: Get help + description: View help information about available resources in HTML format. + responses: + "200": + description: Success + /user: + get: + summary: View personalized greeting + operationId: View personalized greeting + description: View a personalized greeting for the specified or guest user. + parameters: + - name: user + in: query + description: Your user name. + required: false + schema: + type: string + responses: + "200": + description: Success + /iloveapis: + get: + summary: View API affirmation + operationId: View API affirmation + description: View API affirmation in HTML format. + responses: + "200": + description: Success + /ip: + get: + summary: View IP address + operationId: View IP address + description: View the IP address of the client in JSON format. + responses: + "200": + description: Success + /xml: + get: + summary: View XML response + operationId: View XML response + description: View a sample response in XML format. + responses: + "200": + description: Success + /json: + get: + summary: View JSON response + operationId: View JSON response + description: View a sample response in JSON format. + responses: + "200": + description: Success + /echo: + get: + summary: View request headers and body + operationId: View request headers and body + description: View the request headers and body in JSON format. + responses: + "200": + description: Success + post: + summary: Send request and view request headers and body + operationId: Send request and view request headers and body + description: "Send a request and view the resulting request headers and body in JSON + format. +The request payload can be specified using one of the + following formats: application/json, application/x-www-form-urlencoded, + or application/xml." + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/request-body" + description: Request payload in application/json, + application/x-www-form-urlencoded, or application/xml format. + required: true + responses: + "200": + description: Success + "/statuscode/{code}": + get: + summary: View status code and message + operationId: View status code and message + description: View status code and message for the specified value. + parameters: + - name: code + in: path + description: HTTP status code. + required: true + schema: + type: string + responses: + "200": + description: Success + /auth: + get: + security: + - basicAuth: [] + summary: Validate access using basic authentication + operationId: Validate access using basic authentication + description: Validate access using basic authentication. + responses: + "200": + description: Success +servers: + - url: http://mocktarget.apigee.net + - url: https://mocktarget.apigee.net +components: + securitySchemes: + basicAuth: + type: http + description: HTTP Basic Authentication. + scheme: basic + schemas: + request-body: + properties: + replace-me: + type: object + description: Replace with request payload in application/json, + application/x-www-form-urlencoded, or application/xml format. \ No newline at end of file From 532d46ce3e0363011c373b16d05bf709f0f9cebd Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 24 Mar 2022 17:24:01 +0100 Subject: [PATCH 003/562] configurable proxy generator testing --- tools/oas-configurable-proxy/.gitignore | 2 + tools/oas-configurable-proxy/README.md | 47 ++++++++ tools/oas-configurable-proxy/index.js | 100 ++++++++++++------ tools/oas-configurable-proxy/pipeline.sh | 25 +++++ .../proxy.yaml.handlebars | 16 ++- .../test/apiproxies/apigeemock-v2/proxy.yaml | 48 +++++++++ .../test/apiproxies/apigeemock-v3/proxy.yaml | 54 ++++++++++ .../test/{example => oas}/apigeemock-v2.yaml | 2 + .../test/{example => oas}/apigeemock-v3.yaml | 18 +++- 9 files changed, 278 insertions(+), 34 deletions(-) create mode 100644 tools/oas-configurable-proxy/.gitignore create mode 100755 tools/oas-configurable-proxy/pipeline.sh create mode 100644 tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml create mode 100644 tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml rename tools/oas-configurable-proxy/test/{example => oas}/apigeemock-v2.yaml (99%) rename tools/oas-configurable-proxy/test/{example => oas}/apigeemock-v3.yaml (91%) diff --git a/tools/oas-configurable-proxy/.gitignore b/tools/oas-configurable-proxy/.gitignore new file mode 100644 index 000000000..127574daf --- /dev/null +++ b/tools/oas-configurable-proxy/.gitignore @@ -0,0 +1,2 @@ +test/out +my-archive \ No newline at end of file diff --git a/tools/oas-configurable-proxy/README.md b/tools/oas-configurable-proxy/README.md index e69de29bb..ec4a9b45e 100644 --- a/tools/oas-configurable-proxy/README.md +++ b/tools/oas-configurable-proxy/README.md @@ -0,0 +1,47 @@ +# Configurable Proxy Generator from OAS + +This tool generates configurable proxy archives from open API specifications. + +It it includes the following features: +* Creates the configurable proxy operations based on the OAS paths +* API Key validation based at a global or operation level +* Configurable base path (using the OPTIONAL `--basepath` flag) +* Target server extraction +* Environment deployment registration (using the OPTIONAL `--envs` flag) + +## Getting started + +We start by defining the following variables dependent on your installation: + +``` +APIGEE_ARCHIVE_ENV=my-env # Apigee Environment of type archive +APIGEE_ORG=my-org +APIGEE_HOSTNAME=https://my-hostname.com +``` + +From within the root folder run: + +```sh +node index.js --oas=./test/oas/apigeemock-v3.yaml --basepath /mock/v3 --name apigeemock-v3 +``` + +To see the proxy config printed to standard out. If you add an output folder +with the `--out` flag then the archive will be created or augmented in the +specified folder + +```sh +node index.js --oas=./test/oas/apigeemock-v3.yaml --basepath /mock/v3 --name apigeemock-v3 --out ./my-archive --envs $APIGEE_ARCHIVE_ENV +node index.js --oas=./test/oas/apigeemock-v2.yaml --basepath /mock/v3 --name apigeemock-v2 --out ./my-archive --envs $APIGEE_ARCHIVE_ENV +``` + +To deploy the archive to your Apigee runtime you can run the following command: + +```sh +gcloud alpha apigee archives deploy --organization=$APIGEE_ORG --environment=$APIGEE_ARCHIVE_ENV --source=./my-archive +``` + +Once the deployment is successful, you can try it using: + +```sh +curl $APIGEE_HOSTNAME/mock/v2/json +``` \ No newline at end of file diff --git a/tools/oas-configurable-proxy/index.js b/tools/oas-configurable-proxy/index.js index b97aef518..33cae7281 100644 --- a/tools/oas-configurable-proxy/index.js +++ b/tools/oas-configurable-proxy/index.js @@ -4,6 +4,15 @@ const fs = require('fs') const path = require('path'); const handlebars = require('handlebars'); +const argv = minimist(process.argv.slice(2)); +const outFolder = argv['out'] +const oasPath = argv['oas'] +const basepath = argv['basepath'] +const name = argv['name'] +const envs = argv['envs'] + +generateFromOAS({ outFolder, oasPath, basepath, name, envs }); + /** * Generate Proxy Config from OAS * @@ -17,11 +26,9 @@ async function generateFromOAS(config) { const oasVersionSplit = oasVersionString.split("."); const oasVersionMajor = parseInt(oasVersionSplit[0], 10); const proxyName = config.name || api.info.title.replace(/ /g, '-').toLowerCase(); - const proxyFolder = path.join(outFolder, 'src', 'main', 'apigee', 'apiproxies', proxyName) const basepath = config.basepath || `/${proxyName}/v1` - createFolderIfNotExists(proxyFolder) - const template = handlebars.compile(fs.readFileSync('./proxy.yaml.handlebars').toString()); + // target service let targetService = 'https://notfound.apigee.google.com # TODO replace me' if (oasVersionMajor === 2 && api.host) { const schema = Array.isArray(api.schemes) && api.schemes.includes('https') ? 'https' : 'http'; @@ -37,38 +44,79 @@ async function generateFromOAS(config) { operations.push({ id: `${method}-${pathItem.operationId.replace(/ /g, '-').toLowerCase()}`, httpMethod: method.toUpperCase(), - requestPath: requestPath + requestPath: requestPath, + consumerAuthorization: translateOasSecurity(pathItem.security, api.components) }) } } + + // consumer auth + if (oasVersionMajor === 3) { + consumerAuthorization = translateOasSecurity(api.security, api.components) + } + data = { basepath, operations, - targetService + targetService, + consumerAuthorization } + + const template = handlebars.compile(fs.readFileSync('./proxy.yaml.handlebars').toString()); const generatedProxyConfig = template(data) - fs.writeFileSync(path.join(proxyFolder, 'proxy.yaml'), generatedProxyConfig); - const envs = (config.envs || '').split(',') - envs.forEach(env => { - const envFolder = path.join(outFolder, 'src', 'main', 'apigee', 'environments', env); - createFolderIfNotExists(envFolder); - const envDeployments = path.join(envFolder, "deployments.json"); - let deployments = { proxies: [] } - if (fs.existsSync(envDeployments)) { - deployments = JSON.parse(fs.readFileSync(envDeployments)) - } - const uniqueProxies = new Set(deployments.proxies); - uniqueProxies.add(proxyName); - deployments.proxies = [ ...uniqueProxies ]; - fs.writeFileSync(envDeployments, JSON.stringify(deployments, null, 2)); - }); + // Print to file or stdout + if (config.outFolder) { + const proxyFolder = path.join(outFolder, 'src', 'main', 'apigee', 'apiproxies', proxyName); + createFolderIfNotExists(proxyFolder); + fs.writeFileSync(path.join(proxyFolder, 'proxy.yaml'), generatedProxyConfig); + const envs = (config.envs || '').split(',') + envs.forEach(env => { + const envFolder = path.join(outFolder, 'src', 'main', 'apigee', 'environments', env); + createFolderIfNotExists(envFolder); + const envDeployments = path.join(envFolder, "deployments.json"); + let deployments = { proxies: [] } + if (fs.existsSync(envDeployments)) { + deployments = JSON.parse(fs.readFileSync(envDeployments)) + } + const uniqueProxies = new Set(deployments.proxies); + uniqueProxies.add(proxyName); + deployments.proxies = [...uniqueProxies]; + fs.writeFileSync(envDeployments, JSON.stringify(deployments, null, 2)); + }); + } else { + console.log(generatedProxyConfig); + } } catch (err) { console.error(err); } } +/** + * Translate OAS security object to an apigee consumer authorization + * + * @param {any} security + * @param {any} components + * @return {any} apigee consumer authorization + */ +function translateOasSecurity(security, components) { + consumerAuthorization = { enabled: false, locations: [] }; + (security || []).forEach(securityObject => { + Object.keys(securityObject).forEach(securityObjectKey => { + if (components && components.securitySchemes && components.securitySchemes[securityObjectKey]) { + const securityScheme = components.securitySchemes[securityObjectKey] + if (securityScheme.type.toLowerCase() === "apikey") { + consumerAuthorization.enabled = true + consumerAuthorization.locations.push({ in: securityScheme.in, name: securityScheme.name}); + } + } + + }); + }); + return consumerAuthorization +} + /** * Create a folder recursively if it doesn't exist * @@ -78,14 +126,4 @@ function createFolderIfNotExists(folderPath) { if (!fs.existsSync(folderPath)) { fs.mkdirSync(folderPath, { recursive: true }) } -} - -const argv = minimist(process.argv.slice(2)); -console.log(argv) -const outFolder = argv['out'] || './generated' -const oasPath = argv['oas'] -const basepath = argv['basepath'] -const name = argv['name'] -const envs = argv['envs'] -createFolderIfNotExists(outFolder) -generateFromOAS({outFolder, oasPath, basepath, name, envs}); \ No newline at end of file +} \ No newline at end of file diff --git a/tools/oas-configurable-proxy/pipeline.sh b/tools/oas-configurable-proxy/pipeline.sh new file mode 100755 index 000000000..3f6bd079d --- /dev/null +++ b/tools/oas-configurable-proxy/pipeline.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +npm install + +node index.js --oas=./test/oas/apigeemock-v2.yaml --basepath /mock/v2 --name apigeemock-v2 --envs test2 --out ./test/out +node index.js --oas=./test/oas/apigeemock-v3.yaml --basepath /mock/v3 --name apigeemock-v3 --envs test2 --out ./test/out + +diff ./test/out/src/main/apigee/apiproxies/apigeemock-v2/proxy.yaml ./test/apiproxies/apigeemock-v2/proxy.yaml +diff ./test/out/src/main/apigee/apiproxies/apigeemock-v3/proxy.yaml ./test/apiproxies/apigeemock-v3/proxy.yaml diff --git a/tools/oas-configurable-proxy/proxy.yaml.handlebars b/tools/oas-configurable-proxy/proxy.yaml.handlebars index b199ad578..340925661 100644 --- a/tools/oas-configurable-proxy/proxy.yaml.handlebars +++ b/tools/oas-configurable-proxy/proxy.yaml.handlebars @@ -5,6 +5,20 @@ operations: http_match: - path_template: "{{this.requestPath}}" method: {{this.httpMethod}} + {{#if this.consumerAuthorization.enabled }} + consumer_authorization: + locations: + {{#each consumerAuthorization.locations}} + - {{this.in}}: {{this.name}} + {{/each}} + {{/if}} {{/each}} target: - uri: "{{targetService}}" \ No newline at end of file + uri: "{{targetService}}" +{{#if consumerAuthorization.enabled }} +consumer_authorization: + locations: +{{#each consumerAuthorization.locations}} + - {{this.in}}: {{this.name}} +{{/each}} +{{/if}} \ No newline at end of file diff --git a/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml new file mode 100644 index 000000000..6b24a811b --- /dev/null +++ b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml @@ -0,0 +1,48 @@ +basepath: "/mock/v2" +operations: +- id: get-view-a-personalized-greeting + http_match: + - path_template: "/" + method: GET +- id: get-get-help + http_match: + - path_template: "/help" + method: GET +- id: get-view-personalized-greeting + http_match: + - path_template: "/user" + method: GET +- id: get-view-api-affirmation + http_match: + - path_template: "/iloveapis" + method: GET +- id: get-view-ip-address + http_match: + - path_template: "/ip" + method: GET +- id: get-view-xml-response + http_match: + - path_template: "/xml" + method: GET +- id: get-view-json-response + http_match: + - path_template: "/json" + method: GET +- id: get-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: GET +- id: post-send-request-and-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: POST +- id: get-view-status-code-and-message + http_match: + - path_template: "/statuscode/{code}" + method: GET +- id: get-validate-access-using-basic-authentication + http_match: + - path_template: "/auth" + method: GET +target: + uri: "https://mocktarget.apigee.net" diff --git a/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml new file mode 100644 index 000000000..89bda13c6 --- /dev/null +++ b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml @@ -0,0 +1,54 @@ +basepath: "/mock/v3" +operations: +- id: get-view-a-personalized-greeting + http_match: + - path_template: "/" + method: GET +- id: get-get-help + http_match: + - path_template: "/help" + method: GET +- id: get-view-personalized-greeting + http_match: + - path_template: "/user" + method: GET + consumer_authorization: + locations: + - query: apikey +- id: get-view-api-affirmation + http_match: + - path_template: "/iloveapis" + method: GET +- id: get-view-ip-address + http_match: + - path_template: "/ip" + method: GET +- id: get-view-xml-response + http_match: + - path_template: "/xml" + method: GET +- id: get-view-json-response + http_match: + - path_template: "/json" + method: GET +- id: get-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: GET +- id: post-send-request-and-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: POST +- id: get-view-status-code-and-message + http_match: + - path_template: "/statuscode/{code}" + method: GET +- id: get-validate-access-using-basic-authentication + http_match: + - path_template: "/auth" + method: GET +target: + uri: "http://mocktarget.apigee.net" +consumer_authorization: + locations: + - header: X-API-KEY diff --git a/tools/oas-configurable-proxy/test/example/apigeemock-v2.yaml b/tools/oas-configurable-proxy/test/oas/apigeemock-v2.yaml similarity index 99% rename from tools/oas-configurable-proxy/test/example/apigeemock-v2.yaml rename to tools/oas-configurable-proxy/test/oas/apigeemock-v2.yaml index a0fc52cb3..4847fd2d9 100644 --- a/tools/oas-configurable-proxy/test/example/apigeemock-v2.yaml +++ b/tools/oas-configurable-proxy/test/oas/apigeemock-v2.yaml @@ -99,6 +99,8 @@ paths: summary: View request headers and body operationId: View request headers and body description: View the request headers and body in JSON format. + security: + - apiKeyAuth: [] produces: - application/json responses: diff --git a/tools/oas-configurable-proxy/test/example/apigeemock-v3.yaml b/tools/oas-configurable-proxy/test/oas/apigeemock-v3.yaml similarity index 91% rename from tools/oas-configurable-proxy/test/example/apigeemock-v3.yaml rename to tools/oas-configurable-proxy/test/oas/apigeemock-v3.yaml index ab73985c1..8860a1e1c 100644 --- a/tools/oas-configurable-proxy/test/example/apigeemock-v3.yaml +++ b/tools/oas-configurable-proxy/test/oas/apigeemock-v3.yaml @@ -3,6 +3,10 @@ info: description: OpenAPI Specification for the Apigee mock target service endpoint. version: 1.0.0 title: Mock Target API + +security: + - apiKeyAuth: [] + paths: /: get: @@ -32,6 +36,8 @@ paths: summary: View personalized greeting operationId: View personalized greeting description: View a personalized greeting for the specified or guest user. + security: + - apiKeyQuery: [] parameters: - name: user in: query @@ -135,10 +141,18 @@ components: type: http description: HTTP Basic Authentication. scheme: basic + application/x-www-form-urlencoded, or application/xml format. + apiKeyAuth: # arbitrary name for the security scheme + type: apiKey + in: header # can be "header", "query" or "cookie" + name: X-API-KEY + apiKeyQuery: + type: apiKey + in: query # can be "header", "query" or "cookie" + name: apikey schemas: request-body: properties: replace-me: type: object - description: Replace with request payload in application/json, - application/x-www-form-urlencoded, or application/xml format. \ No newline at end of file + description: Replace with request payload in application/json, \ No newline at end of file From de430a4f7d0e4fa4a397b9e5212eec37a33de29a Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 25 Mar 2022 08:58:39 +0100 Subject: [PATCH 004/562] linter happiness --- CODEOWNERS | 1 + README.md | 5 +- tools/oas-configurable-proxy/index.js | 17 +++ .../proxy.yaml.handlebars | 38 ++++-- .../test/apiproxies/apigeemock-v2/proxy.yaml | 102 +++++++++------- .../test/apiproxies/apigeemock-v3/proxy.yaml | 110 ++++++++++-------- .../test/oas/apigeemock-v2.yaml | 59 +++++++--- .../test/oas/apigeemock-v3.yaml | 31 +++-- 8 files changed, 231 insertions(+), 132 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 85905bd77..25ec7a55f 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -29,5 +29,6 @@ /tools/decrypt-hybrid-assets @yuriylesyuk /tools/hybrid-quickstart @danistrebel /tools/oas-apigee-mock @markjkelly +/tools/oas-configurable-proxy @danistrebel /tools/pipeline-linter @seymen @danistrebel /tools/pipeline-runner @seymen @danistrebel diff --git a/README.md b/README.md index 53fc05794..96a49d108 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ further to fit a particular use case. A reference for protecting API proxies against XML and JSON threats - [Auth Schemes](references/auth-schemes) - Example implementations for various popular API auth schemes - + ## Tools This folder contains ready-made utilities which simplify and assist the usage of @@ -79,6 +79,9 @@ Apigee products. A kickstart script to integrate OpenLegacy, Apigee and Cloud Run - [OpenAPI to Apigee Mock Proxy](tools/oas-apigee-mock) - A utility to generate an Apigee Proxy bundle with mock responses from a spec +- [OpenAPI to Configurable Proxy](tools/oas-configurable-proxy) - + A tool to generate to configurable proxy archives from an Open API + Specification ## Labs diff --git a/tools/oas-configurable-proxy/index.js b/tools/oas-configurable-proxy/index.js index 33cae7281..044272149 100644 --- a/tools/oas-configurable-proxy/index.js +++ b/tools/oas-configurable-proxy/index.js @@ -1,3 +1,20 @@ +/** + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + const SwaggerParser = require('@apidevtools/swagger-parser'); const minimist = require('minimist') const fs = require('fs') diff --git a/tools/oas-configurable-proxy/proxy.yaml.handlebars b/tools/oas-configurable-proxy/proxy.yaml.handlebars index 340925661..332b8fca6 100644 --- a/tools/oas-configurable-proxy/proxy.yaml.handlebars +++ b/tools/oas-configurable-proxy/proxy.yaml.handlebars @@ -1,17 +1,31 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- basepath: "{{basepath}}" operations: {{#each operations}} -- id: {{this.id}} - http_match: - - path_template: "{{this.requestPath}}" - method: {{this.httpMethod}} - {{#if this.consumerAuthorization.enabled }} - consumer_authorization: - locations: - {{#each consumerAuthorization.locations}} - - {{this.in}}: {{this.name}} - {{/each}} - {{/if}} + - id: {{this.id}} + http_match: + - path_template: "{{this.requestPath}}" + method: {{this.httpMethod}} + {{#if this.consumerAuthorization.enabled }} + consumer_authorization: + locations: + {{#each consumerAuthorization.locations}} + - {{this.in}}: {{this.name}} + {{/each}} + {{/if}} {{/each}} target: uri: "{{targetService}}" @@ -19,6 +33,6 @@ target: consumer_authorization: locations: {{#each consumerAuthorization.locations}} - - {{this.in}}: {{this.name}} + - {{this.in}}: {{this.name}} {{/each}} {{/if}} \ No newline at end of file diff --git a/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml index 6b24a811b..8627e64db 100644 --- a/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml +++ b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v2/proxy.yaml @@ -1,48 +1,62 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- basepath: "/mock/v2" operations: -- id: get-view-a-personalized-greeting - http_match: - - path_template: "/" - method: GET -- id: get-get-help - http_match: - - path_template: "/help" - method: GET -- id: get-view-personalized-greeting - http_match: - - path_template: "/user" - method: GET -- id: get-view-api-affirmation - http_match: - - path_template: "/iloveapis" - method: GET -- id: get-view-ip-address - http_match: - - path_template: "/ip" - method: GET -- id: get-view-xml-response - http_match: - - path_template: "/xml" - method: GET -- id: get-view-json-response - http_match: - - path_template: "/json" - method: GET -- id: get-view-request-headers-and-body - http_match: - - path_template: "/echo" - method: GET -- id: post-send-request-and-view-request-headers-and-body - http_match: - - path_template: "/echo" - method: POST -- id: get-view-status-code-and-message - http_match: - - path_template: "/statuscode/{code}" - method: GET -- id: get-validate-access-using-basic-authentication - http_match: - - path_template: "/auth" - method: GET + - id: get-view-a-personalized-greeting + http_match: + - path_template: "/" + method: GET + - id: get-get-help + http_match: + - path_template: "/help" + method: GET + - id: get-view-personalized-greeting + http_match: + - path_template: "/user" + method: GET + - id: get-view-api-affirmation + http_match: + - path_template: "/iloveapis" + method: GET + - id: get-view-ip-address + http_match: + - path_template: "/ip" + method: GET + - id: get-view-xml-response + http_match: + - path_template: "/xml" + method: GET + - id: get-view-json-response + http_match: + - path_template: "/json" + method: GET + - id: get-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: GET + - id: post-send-request-and-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: POST + - id: get-view-status-code-and-message + http_match: + - path_template: "/statuscode/{code}" + method: GET + - id: get-validate-access-using-basic-authentication + http_match: + - path_template: "/auth" + method: GET target: uri: "https://mocktarget.apigee.net" diff --git a/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml index 89bda13c6..690181c3f 100644 --- a/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml +++ b/tools/oas-configurable-proxy/test/apiproxies/apigeemock-v3/proxy.yaml @@ -1,54 +1,68 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- basepath: "/mock/v3" operations: -- id: get-view-a-personalized-greeting - http_match: - - path_template: "/" - method: GET -- id: get-get-help - http_match: - - path_template: "/help" - method: GET -- id: get-view-personalized-greeting - http_match: - - path_template: "/user" - method: GET - consumer_authorization: - locations: - - query: apikey -- id: get-view-api-affirmation - http_match: - - path_template: "/iloveapis" - method: GET -- id: get-view-ip-address - http_match: - - path_template: "/ip" - method: GET -- id: get-view-xml-response - http_match: - - path_template: "/xml" - method: GET -- id: get-view-json-response - http_match: - - path_template: "/json" - method: GET -- id: get-view-request-headers-and-body - http_match: - - path_template: "/echo" - method: GET -- id: post-send-request-and-view-request-headers-and-body - http_match: - - path_template: "/echo" - method: POST -- id: get-view-status-code-and-message - http_match: - - path_template: "/statuscode/{code}" - method: GET -- id: get-validate-access-using-basic-authentication - http_match: - - path_template: "/auth" - method: GET + - id: get-view-a-personalized-greeting + http_match: + - path_template: "/" + method: GET + - id: get-get-help + http_match: + - path_template: "/help" + method: GET + - id: get-view-personalized-greeting + http_match: + - path_template: "/user" + method: GET + consumer_authorization: + locations: + - query: apikey + - id: get-view-api-affirmation + http_match: + - path_template: "/iloveapis" + method: GET + - id: get-view-ip-address + http_match: + - path_template: "/ip" + method: GET + - id: get-view-xml-response + http_match: + - path_template: "/xml" + method: GET + - id: get-view-json-response + http_match: + - path_template: "/json" + method: GET + - id: get-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: GET + - id: post-send-request-and-view-request-headers-and-body + http_match: + - path_template: "/echo" + method: POST + - id: get-view-status-code-and-message + http_match: + - path_template: "/statuscode/{code}" + method: GET + - id: get-validate-access-using-basic-authentication + http_match: + - path_template: "/auth" + method: GET target: uri: "http://mocktarget.apigee.net" consumer_authorization: locations: - - header: X-API-KEY + - header: X-API-KEY diff --git a/tools/oas-configurable-proxy/test/oas/apigeemock-v2.yaml b/tools/oas-configurable-proxy/test/oas/apigeemock-v2.yaml index 4847fd2d9..0d32fbb35 100644 --- a/tools/oas-configurable-proxy/test/oas/apigeemock-v2.yaml +++ b/tools/oas-configurable-proxy/test/oas/apigeemock-v2.yaml @@ -1,6 +1,21 @@ -swagger: '2.0' +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +swagger: "2.0" info: - description: 'OpenAPI Specification for the Apigee mock target service endpoint.' + description: "OpenAPI Specification for the Apigee mock + target service endpoint." version: 1.0.0 title: Mock Target API host: mocktarget.apigee.net @@ -26,17 +41,18 @@ paths: required: false type: string responses: - '200': + "200": description: Success /help: get: summary: Get help operationId: Get help - description: View help information about available resources in HTML format. + description: "View help information about + available resources in HTML format." produces: - text/html responses: - '200': + "200": description: Success /user: get: @@ -52,7 +68,7 @@ paths: required: false type: string responses: - '200': + "200": description: Success /iloveapis: get: @@ -62,7 +78,7 @@ paths: produces: - text/html responses: - '200': + "200": description: Success /ip: get: @@ -72,7 +88,7 @@ paths: produces: - application/json responses: - '200': + "200": description: Success /xml: get: @@ -82,7 +98,7 @@ paths: produces: - application/xml responses: - '200': + "200": description: Success /json: get: @@ -92,7 +108,7 @@ paths: produces: - application/json responses: - '200': + "200": description: Success /echo: get: @@ -104,7 +120,7 @@ paths: produces: - application/json responses: - '200': + "200": description: Success post: summary: Send request and view request headers and body @@ -113,16 +129,20 @@ paths: - application/xml - application/x-www-form-urlencoded operationId: Send request and view request headers and body - description: 'Send a request and view the resulting request headers and body in JSON format.

The request payload can be specified using one of the following formats: application/json, application/x-www-form-urlencoded, or application/xml.' + description: "Send a request and view the resulting request headers and + body in JSON format.

The request payload can be specified using one + of the following formats: application/json, + application/x-www-form-urlencoded, or application/xml." parameters: - name: body in: body - description: 'Request payload in application/json, application/x-www-form-urlencoded, or application/xml format.' + description: "Request payload in application/json, + application/x-www-form-urlencoded, or application/xml format." required: true schema: - $ref: '#/definitions/request-body' + $ref: "#/definitions/request-body" responses: - '200': + "200": description: Success /statuscode/{code}: get: @@ -138,23 +158,24 @@ paths: required: true type: string responses: - '200': + "200": description: Success /auth: get: security: - - basicAuth: [] + - basicAuth: [] summary: Validate access using basic authentication operationId: Validate access using basic authentication description: Validate access using basic authentication. produces: - application/json responses: - '200': + "200": description: Success definitions: request-body: properties: replace-me: type: object - description: 'Replace with request payload in application/json, application/x-www-form-urlencoded, or application/xml format.' \ No newline at end of file + description: "Replace with request payload in application/json, + application/x-www-form-urlencoded, or application/xml format." diff --git a/tools/oas-configurable-proxy/test/oas/apigeemock-v3.yaml b/tools/oas-configurable-proxy/test/oas/apigeemock-v3.yaml index 8860a1e1c..71c2ab97d 100644 --- a/tools/oas-configurable-proxy/test/oas/apigeemock-v3.yaml +++ b/tools/oas-configurable-proxy/test/oas/apigeemock-v3.yaml @@ -1,6 +1,21 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- openapi: 3.0.0 info: - description: OpenAPI Specification for the Apigee mock target service endpoint. + description: "OpenAPI Specification for the Apigee mock + target service endpoint." version: 1.0.0 title: Mock Target API @@ -27,7 +42,8 @@ paths: get: summary: Get help operationId: Get help - description: View help information about available resources in HTML format. + description: "View help information about + available resources in HTML format." responses: "200": description: Success @@ -91,11 +107,10 @@ paths: post: summary: Send request and view request headers and body operationId: Send request and view request headers and body - description: "Send a request and view the resulting request headers and body in JSON - format. -The request payload can be specified using one of the - following formats: application/json, application/x-www-form-urlencoded, - or application/xml." + description: "Send a request and view the resulting request headers + and body in JSON format. The request payload can be specified using + one of the following formats: application/json, + application/x-www-form-urlencoded, or application/xml." requestBody: content: application/json: @@ -155,4 +170,4 @@ components: properties: replace-me: type: object - description: Replace with request payload in application/json, \ No newline at end of file + description: Replace with request payload in application/json, From fd8208052d86d8349505be737cff1516973035d7 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 7 Apr 2022 18:14:56 +0200 Subject: [PATCH 005/562] OAS to configurable proxy generator review comments --- README.md | 2 +- tools/oas-configurable-proxy/README.md | 22 ++++++++++++++-------- tools/oas-configurable-proxy/index.js | 1 - tools/oas-configurable-proxy/package.json | 3 ++- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 96a49d108..c7c7f5df6 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Apigee products. - [OpenAPI to Apigee Mock Proxy](tools/oas-apigee-mock) - A utility to generate an Apigee Proxy bundle with mock responses from a spec - [OpenAPI to Configurable Proxy](tools/oas-configurable-proxy) - - A tool to generate to configurable proxy archives from an Open API + A tool to generate configurable proxy archives from an OpenAPI Specification ## Labs diff --git a/tools/oas-configurable-proxy/README.md b/tools/oas-configurable-proxy/README.md index ec4a9b45e..a0bbfd00f 100644 --- a/tools/oas-configurable-proxy/README.md +++ b/tools/oas-configurable-proxy/README.md @@ -1,12 +1,12 @@ # Configurable Proxy Generator from OAS -This tool generates configurable proxy archives from open API specifications. +This tool generates configurable proxy archives from OpenAPI Specifications. -It it includes the following features: +It includes the following features: * Creates the configurable proxy operations based on the OAS paths -* API Key validation based at a global or operation level +* API Key validation at a global or operation level * Configurable base path (using the OPTIONAL `--basepath` flag) -* Target server extraction +* Target Server based on the hostname * Environment deployment registration (using the OPTIONAL `--envs` flag) ## Getting started @@ -22,16 +22,22 @@ APIGEE_HOSTNAME=https://my-hostname.com From within the root folder run: ```sh -node index.js --oas=./test/oas/apigeemock-v3.yaml --basepath /mock/v3 --name apigeemock-v3 +npm install ``` -To see the proxy config printed to standard out. If you add an output folder +to install the dependencies and run: + +```sh +npm start -- --oas=./test/oas/apigeemock-v3.yaml --basepath /mock/v3 --name apigeemock-v3 +``` + +To see the proxy config printed to stdout. If you add an output folder with the `--out` flag then the archive will be created or augmented in the specified folder ```sh -node index.js --oas=./test/oas/apigeemock-v3.yaml --basepath /mock/v3 --name apigeemock-v3 --out ./my-archive --envs $APIGEE_ARCHIVE_ENV -node index.js --oas=./test/oas/apigeemock-v2.yaml --basepath /mock/v3 --name apigeemock-v2 --out ./my-archive --envs $APIGEE_ARCHIVE_ENV +npm start -- --oas=./test/oas/apigeemock-v3.yaml --basepath /mock/v3 --name apigeemock-v3 --out ./my-archive --envs $APIGEE_ARCHIVE_ENV +npm start -- --oas=./test/oas/apigeemock-v2.yaml --basepath /mock/v3 --name apigeemock-v2 --out ./my-archive --envs $APIGEE_ARCHIVE_ENV ``` To deploy the archive to your Apigee runtime you can run the following command: diff --git a/tools/oas-configurable-proxy/index.js b/tools/oas-configurable-proxy/index.js index 044272149..a56c6f6d8 100644 --- a/tools/oas-configurable-proxy/index.js +++ b/tools/oas-configurable-proxy/index.js @@ -38,7 +38,6 @@ generateFromOAS({ outFolder, oasPath, basepath, name, envs }); async function generateFromOAS(config) { try { const api = await SwaggerParser.validate(config.oasPath); - api.openapi const oasVersionString = api.openapi || api.swagger; const oasVersionSplit = oasVersionString.split("."); const oasVersionMajor = parseInt(oasVersionSplit[0], 10); diff --git a/tools/oas-configurable-proxy/package.json b/tools/oas-configurable-proxy/package.json index 223c5d55e..1a42884c1 100644 --- a/tools/oas-configurable-proxy/package.json +++ b/tools/oas-configurable-proxy/package.json @@ -4,7 +4,8 @@ "description": "Generates Apigee Configurable Proxy Envs from Swagger Specs", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "start": "node index.js", + "test": "./pipeline.sh" }, "author": "danistrebel", "dependencies": { From b87edac23299cb89a006bfb7d82d7761e1279384 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 19 Apr 2022 16:21:03 +0200 Subject: [PATCH 006/562] bump hybrid quickstart 1.7 --- tools/hybrid-quickstart/cloudbuild.yaml | 3 +- tools/hybrid-quickstart/steps.sh | 37 +++++++++++-------------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/tools/hybrid-quickstart/cloudbuild.yaml b/tools/hybrid-quickstart/cloudbuild.yaml index 726f1b131..a36095cb2 100644 --- a/tools/hybrid-quickstart/cloudbuild.yaml +++ b/tools/hybrid-quickstart/cloudbuild.yaml @@ -20,6 +20,7 @@ steps: args: - "-c" - |- + gcloud components update # b/229248353 apt-get update && apt-get install zip -y ./initialize-runtime-gke.sh || touch .failure env: @@ -78,4 +79,4 @@ substitutions: _QUICKSTART_ENV_NAME: test1 _QUICKSTART_ENV_GROUP_NAME: test _DESTROY_AFTER_VALIDATION: "false" - _CERT_TYPE: "" # default (let's encrypt) + _CERT_TYPE: "" # default: 'google-managed' diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index c14396f95..3c0d6c287 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -51,13 +51,13 @@ set_config_params() { export GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME:-apigee-hybrid} export GKE_CLUSTER_MACHINE_TYPE=${GKE_CLUSTER_MACHINE_TYPE:-e2-standard-4} echo "- GKE Node Type $GKE_CLUSTER_MACHINE_TYPE" - export APIGEE_HYBRID_VERSION='1.6.6' + export APIGEE_HYBRID_VERSION='1.7.0' echo "- Apigee hybrid version $APIGEE_HYBRID_VERSION" export KPT_VERSION='v0.34.0' echo "- kpt version $KPT_VERSION" - export CERT_MANAGER_VERSION='v1.5.4' + export CERT_MANAGER_VERSION='v1.7.2' echo "- Cert Manager version $CERT_MANAGER_VERSION" - export ASM_VERSION='1.10' + export ASM_VERSION='1.12' echo "- ASM version $ASM_VERSION" OS_NAME=$(uname -s) @@ -65,13 +65,13 @@ set_config_params() { if [[ "$OS_NAME" == "Linux" ]]; then echo "- 🐧 Using Linux binaries" export APIGEE_CTL='apigeectl_linux_64.tar.gz' - export KPT_BINARY='kpt_linux_amd64-0.34.0.tar.gz' export JQ_VERSION='jq-1.6/jq-linux64' + export KPT_BINARY='kpt_linux_amd64-0.34.0.tar.gz' elif [[ "$OS_NAME" == "Darwin" ]]; then echo "- 🍏 Using macOS binaries" export APIGEE_CTL='apigeectl_mac_64.tar.gz' - export KPT_BINARY='kpt_darwin_amd64-0.34.0.tar.gz' export JQ_VERSION='jq-1.6/jq-osx-amd64' + export KPT_BINARY='kpt_darwin_amd64-0.34.0.tar.gz' else echo "💣 Only Linux and macOS are supported at this time. You seem to be running on $OS_NAME." exit 2 @@ -316,7 +316,7 @@ configure_network() { fi if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then - gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443 --target-tags hybrid-quickstart --network "$NETWORK" + gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" fi if [ -z "$(gcloud compute addresses list --format json --filter 'name=apigee-ingress-ip' --format='get(address)')" ]; then @@ -377,6 +377,7 @@ create_gke_cluster() { --master-ipv4-cidr 172.16.0.16/28 \ --enable-shielded-nodes \ --shielded-secure-boot \ + --shielded-integrity-monitoring \ --network "$NETWORK" \ --subnetwork "$SUBNET" \ --default-max-pods-per-node "110" \ @@ -412,17 +413,17 @@ install_asm() { mkdir -p "$QUICKSTART_TOOLS"/kpt curl --fail -L -o "$QUICKSTART_TOOLS/kpt/kpt.tar.gz" "https://github.com/GoogleContainerTools/kpt/releases/download/${KPT_VERSION}/${KPT_BINARY}" tar xzf "$QUICKSTART_TOOLS/kpt/kpt.tar.gz" -C "$QUICKSTART_TOOLS/kpt" - export PATH=$PATH:"$QUICKSTART_TOOLS"/kpt + export PATH="$QUICKSTART_TOOLS"/kpt:$PATH # prevents asm from installing the wrong kpt version for macOS mkdir -p "$QUICKSTART_TOOLS"/jq curl --fail -L -o "$QUICKSTART_TOOLS"/jq/jq "https://github.com/stedolan/jq/releases/download/$JQ_VERSION" chmod +x "$QUICKSTART_TOOLS"/jq/jq export PATH=$PATH:"$QUICKSTART_TOOLS"/jq - echo "🏗️ Installing Anthos Service Mesh" + mkdir -p "$QUICKSTART_TOOLS"/istio-asm - curl --fail https://storage.googleapis.com/csm-artifacts/asm/install_asm_$ASM_VERSION > "$QUICKSTART_TOOLS"/istio-asm/install_asm - chmod +x "$QUICKSTART_TOOLS"/istio-asm/install_asm + curl --fail https://storage.googleapis.com/csm-artifacts/asm/asmcli_$ASM_VERSION > "$QUICKSTART_TOOLS"/istio-asm/asmcli + chmod +x "$QUICKSTART_TOOLS"/istio-asm/asmcli if [ "$CERT_TYPE" = "google-managed" ];then cat << EOF > "$QUICKSTART_TOOLS"/istio-asm/istio-operator-patch.yaml @@ -437,9 +438,6 @@ spec: resources: requests: cpu: 1000m - readinessProbe: - initialDelaySeconds: 45 - periodSeconds: 60 serviceAnnotations: cloud.google.com/neg: '{"ingress": true}' cloud.google.com/backend-config: '{"default": "ingress-backendconfig"}' @@ -467,9 +465,6 @@ spec: resources: requests: cpu: 1000m - readinessProbe: - initialDelaySeconds: 45 - periodSeconds: 60 serviceAnnotations: networking.gke.io/load-balancer-type: $INGRESS_TYPE service: @@ -487,16 +482,16 @@ EOF rm -rf "$QUICKSTART_TOOLS"/istio-asm/install-out mkdir -p "$QUICKSTART_TOOLS"/istio-asm/install-out - ln -s "$QUICKSTART_TOOLS/kpt/kpt" "$QUICKSTART_TOOLS"/istio-asm/install-out/kpt - "$QUICKSTART_TOOLS"/istio-asm/install_asm \ + yes | "$QUICKSTART_TOOLS"/istio-asm/asmcli install \ --project_id "$PROJECT_ID" \ + --fleet_id "$PROJECT_ID" \ --cluster_name "$GKE_CLUSTER_NAME" \ --cluster_location "$REGION" \ --output_dir "$QUICKSTART_TOOLS"/istio-asm/install-out \ --custom_overlay "$QUICKSTART_TOOLS"/istio-asm/istio-operator-patch.yaml \ - --enable_all \ - --mode install + --ca mesh_ca \ + --enable_all echo "✅ ASM installed" } @@ -506,7 +501,7 @@ download_apigee_ctl() { APIGEECTL_ROOT="$QUICKSTART_TOOLS/apigeectl" - # Remove if it existed from an old install + # Remove existing apigeectl if [ -d "$APIGEECTL_ROOT" ]; then rm -rf "$APIGEECTL_ROOT"; fi mkdir -p "$APIGEECTL_ROOT" From e6189faef0e431e0485ace9b979496e678ef7df2 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 09:05:17 +0200 Subject: [PATCH 007/562] Skip contributing link checker because of changes in Github static file access --- .github/workflows/devrel-static-checks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/devrel-static-checks.yml b/.github/workflows/devrel-static-checks.yml index e74ecef91..9ab1a1d21 100644 --- a/.github/workflows/devrel-static-checks.yml +++ b/.github/workflows/devrel-static-checks.yml @@ -74,3 +74,4 @@ jobs: COPYPASTE_JSCPD_DISABLE_ERRORS: true LINTER_RULES_PATH: '.' GROOVY_NPM_GROOVY_LINT_FILTER_REGEX_EXCLUDE: 'Jenkinsfile' + MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_EXCLUDE: 'CONTRIBUTING.md' From f9c81c85744ff6b1a7cc3ec03476457d9267ed8e Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 09:26:50 +0200 Subject: [PATCH 008/562] marking quickstart and trial as async runs --- tools/pipeline-runner/cloudbuild.yaml | 2 -- tools/pipeline-runner/run-pipelines.sh | 38 ++++++++++++++++++-------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/tools/pipeline-runner/cloudbuild.yaml b/tools/pipeline-runner/cloudbuild.yaml index 3191cdc0c..636d3dfe8 100644 --- a/tools/pipeline-runner/cloudbuild.yaml +++ b/tools/pipeline-runner/cloudbuild.yaml @@ -87,7 +87,6 @@ steps: - 'APIGEE_X_ENV=$_APIGEE_X_ENV' - 'APIGEE_X_HOSTNAME=$_APIGEE_X_HOSTNAME' - 'APIGEE_X_ORG=$_APIGEE_X_ORG' - - 'ASYNC_PIPELINE=$_ASYNC_PIPELINE' - 'HYBRID_GCP_PROJECT=$_HYBRID_GCP_PROJECT' - 'X_TRIAL_GCP_PROJECT=$_X_TRIAL_GCP_PROJECT' secretEnv: @@ -145,5 +144,4 @@ substitutions: _CREATE_GH_ISSUE: "false" # true|false _REPO_GH_ISSUE: "apigee/devrel" _GH_BOT_NAME: "apigee-devrel-bot" - _ASYNC_PIPELINE: "false" # true|false #_PR_NUMBER: "" # automatically set for PRs diff --git a/tools/pipeline-runner/run-pipelines.sh b/tools/pipeline-runner/run-pipelines.sh index d3f10e653..abe108fbe 100755 --- a/tools/pipeline-runner/run-pipelines.sh +++ b/tools/pipeline-runner/run-pipelines.sh @@ -49,32 +49,46 @@ if [ -z "$DIRS" ]; then DIRS=$(echo "$DIRS" | cut -c 2-) fi -async_pipelines='' +# Allowing some solutions to run independently and async +# because they don't have any side effects on the Apigee orgs +# used for CI/CD. +declare -A async_projects=( + [./tools/hybrid-quickstart]=1 [tools/apigee-x-trial-provision]=1 +) +async_pipeline_pids='' STARTTIME=$(date +%s) +# Starting async builds for DIR in ${DIRS//,/ } do - if ! test -f "$DIR/pipeline.sh"; then - echo "[WARN] $DIR/pipeline.sh NOT FOUND" - append_pipeline_result "[N/A] $DIR,0,0s" - elif [ "$ASYNC_PIPELINE" = "true" ]; then + if [ -n "${async_projects[$DIR]}" ] && [ -f "$DIR/pipeline.sh" ]; then run_single_pipeline "$DIR" & pid=$! - async_pipelines="$async_pipelines $pid" + async_pipeline_pids="$async_pipeline_pids $pid" echo "[INFO] DevRel Pipeline: $DIR (async) #$pid" + fi +done + +for DIR in ${DIRS//,/ } +do + if ! test -f "$DIR/pipeline.sh"; then + echo "[WARN] $DIR/pipeline.sh NOT FOUND" + append_pipeline_result "[N/A] $DIR,0,0s" + elif [ -n "${async_projects[$DIR]}" ]; then + echo "[INFO] DevRel Pipeline: $DIR (async, already started)" else echo "[INFO] DevRel Pipeline: $DIR" run_single_pipeline "$DIR" fi done -if [ "$ASYNC_PIPELINE" = "true" ]; then - for pid in $(echo "$async_pipelines" | tr ";" "\n"); do - wait "$pid" - echo "[INFO] Done #$pid (return=$?)" - done -fi +echo "[INFO] Awaiting Async Pipelines" +for pid in $(echo "$async_pipeline_pids" | tr ";" "\n"); do + echo "[INFO] Awaiting #$pid" + wait "$pid" + echo "[INFO] Done #$pid (return=$?)" +done ENDTIME=$(date +%s) append_pipeline_result "TOTAL PIPELINE,0,$((ENDTIME-STARTTIME))s" From 4367de3f59eed01c9658aac351201347eae54871 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 10:00:23 +0200 Subject: [PATCH 009/562] use relative folder in async check --- .github/workflows/devrel-static-checks.yml | 2 +- tools/pipeline-runner/run-pipelines.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/devrel-static-checks.yml b/.github/workflows/devrel-static-checks.yml index 9ab1a1d21..71599ebdc 100644 --- a/.github/workflows/devrel-static-checks.yml +++ b/.github/workflows/devrel-static-checks.yml @@ -74,4 +74,4 @@ jobs: COPYPASTE_JSCPD_DISABLE_ERRORS: true LINTER_RULES_PATH: '.' GROOVY_NPM_GROOVY_LINT_FILTER_REGEX_EXCLUDE: 'Jenkinsfile' - MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_EXCLUDE: 'CONTRIBUTING.md' + MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_EXCLUDE: 'CONTRIBUTING.md,PULL_REQUEST_TEMPLATE.md' diff --git a/tools/pipeline-runner/run-pipelines.sh b/tools/pipeline-runner/run-pipelines.sh index abe108fbe..018ce6688 100755 --- a/tools/pipeline-runner/run-pipelines.sh +++ b/tools/pipeline-runner/run-pipelines.sh @@ -53,7 +53,7 @@ fi # because they don't have any side effects on the Apigee orgs # used for CI/CD. declare -A async_projects=( - [./tools/hybrid-quickstart]=1 [tools/apigee-x-trial-provision]=1 + [./tools/hybrid-quickstart]=1 [./tools/apigee-x-trial-provision]=1 ) async_pipeline_pids='' @@ -62,7 +62,8 @@ STARTTIME=$(date +%s) # Starting async builds for DIR in ${DIRS//,/ } do - if [ -n "${async_projects[$DIR]}" ] && [ -f "$DIR/pipeline.sh" ]; then + RELATIVE_DIR=".${DIR:${#DEVREL_ROOT}}" + if [ -n "${async_projects[$RELATIVE_DIR]}" ] && [ -f "$DIR/pipeline.sh" ]; then run_single_pipeline "$DIR" & pid=$! async_pipeline_pids="$async_pipeline_pids $pid" From b09c00f041390860ba9339c4ac950d283e250819 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 10:29:58 +0200 Subject: [PATCH 010/562] disable markdown link errors --- .github/workflows/devrel-static-checks.yml | 2 +- tools/hybrid-quickstart/steps.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/devrel-static-checks.yml b/.github/workflows/devrel-static-checks.yml index 71599ebdc..83f1151e1 100644 --- a/.github/workflows/devrel-static-checks.yml +++ b/.github/workflows/devrel-static-checks.yml @@ -74,4 +74,4 @@ jobs: COPYPASTE_JSCPD_DISABLE_ERRORS: true LINTER_RULES_PATH: '.' GROOVY_NPM_GROOVY_LINT_FILTER_REGEX_EXCLUDE: 'Jenkinsfile' - MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_EXCLUDE: 'CONTRIBUTING.md,PULL_REQUEST_TEMPLATE.md' + MARKDOWN_MARKDOWN_LINK_CHECK_DISABLE_ERRORS: true diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 3c0d6c287..22692d936 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -741,7 +741,10 @@ install_runtime() { echo "waiting for 30s for the webhook certs to propagate" && sleep 30 - "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml ) + "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml \ + || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml ) \ + || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml ) + sleep 2 && echo -n "⏳ Waiting for Apigeectl apply " wait_for_ready "Running" "kubectl get po -l app=apigee-runtime -n apigee -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Runtime: Running." From fcd57ca470823e8de780757f2d0149476a7fbe34 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 10:56:52 +0200 Subject: [PATCH 011/562] 2nd retry for apigeectl init --- tools/hybrid-quickstart/steps.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 22692d936..8597d2ee2 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -735,7 +735,9 @@ EOF install_runtime() { pushd "$HYBRID_HOME" || return # because apigeectl uses pwd-relative paths mkdir -p "$HYBRID_HOME"/generated - "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml ) + "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml \ + || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml ) \ + || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml ) sleep 2 && echo -n "⏳ Waiting for Apigeectl init " wait_for_ready "Running" "kubectl get po -l app=apigee-controller -n apigee-system -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Controller: Running" echo "waiting for 30s for the webhook certs to propagate" && sleep 30 From 1e3dbfc3e459371f3932ba1287b63b20beff73ad Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 16:41:07 +0200 Subject: [PATCH 012/562] Don't stream hybid quickstart into the main pipeline log --- tools/hybrid-quickstart/pipeline.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/pipeline.sh b/tools/hybrid-quickstart/pipeline.sh index 23cb111f1..840d30b09 100755 --- a/tools/hybrid-quickstart/pipeline.sh +++ b/tools/hybrid-quickstart/pipeline.sh @@ -14,6 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -gcloud builds submit --config ./cloudbuild.yaml \ +gcloud builds submit --config ./cloudbuild.yaml --suppress-logs \ --substitutions="_DESTROY_AFTER_VALIDATION=true" \ --project "$HYBRID_GCP_PROJECT" From 90c23703975004826cd4539fa0d856191be292c8 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 16:47:21 +0200 Subject: [PATCH 013/562] remove log level from builder image --- tools/pipeline-runner/cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pipeline-runner/cloudbuild.yaml b/tools/pipeline-runner/cloudbuild.yaml index 636d3dfe8..9b1554895 100644 --- a/tools/pipeline-runner/cloudbuild.yaml +++ b/tools/pipeline-runner/cloudbuild.yaml @@ -27,7 +27,7 @@ steps: - name: 'gcr.io/cloud-builders/docker' id: 'Pull Image Cache' entrypoint: 'bash' - args: ['-c', 'docker pull gcr.io/$PROJECT_ID/devrel-pipeline:latest -l warn || exit 0'] + args: ['-c', 'docker pull gcr.io/$PROJECT_ID/devrel-pipeline:latest || exit 0'] - name: 'gcr.io/cloud-builders/docker' id: 'Build Image' args: From a80d4df720fcf7f9d65ddf479cd8e48e44631ed0 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 17:17:16 +0200 Subject: [PATCH 014/562] skip async solutions in sync path --- tools/pipeline-runner/run-pipelines.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/pipeline-runner/run-pipelines.sh b/tools/pipeline-runner/run-pipelines.sh index 018ce6688..995b49030 100755 --- a/tools/pipeline-runner/run-pipelines.sh +++ b/tools/pipeline-runner/run-pipelines.sh @@ -73,10 +73,11 @@ done for DIR in ${DIRS//,/ } do + RELATIVE_DIR=".${DIR:${#DEVREL_ROOT}}" if ! test -f "$DIR/pipeline.sh"; then echo "[WARN] $DIR/pipeline.sh NOT FOUND" append_pipeline_result "[N/A] $DIR,0,0s" - elif [ -n "${async_projects[$DIR]}" ]; then + elif [ -n "${async_projects[$RELATIVE_DIR]}" ]; then echo "[INFO] DevRel Pipeline: $DIR (async, already started)" else echo "[INFO] DevRel Pipeline: $DIR" From 8b0d16cbd6615834382cd09e1719630ac1174e5c Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Apr 2022 19:46:07 +0200 Subject: [PATCH 015/562] use fresh tokens for common shared flow deployment --- references/common-shared-flows/deploy.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/references/common-shared-flows/deploy.sh b/references/common-shared-flows/deploy.sh index a1e6d7122..1faf1798e 100755 --- a/references/common-shared-flows/deploy.sh +++ b/references/common-shared-flows/deploy.sh @@ -16,7 +16,6 @@ set -e SCRIPTPATH="$( cd "$(dirname "$0")" || exit >/dev/null 2>&1 ; pwd -P )" -APIGEE_TOKEN=$(gcloud auth print-access-token); while [ "$#" -gt 0 ]; do case "$1" in @@ -45,6 +44,7 @@ export PATH="$PATH:$SCRIPTPATH/../../tools/apigee-sackmesser/bin" for SF in $sf_to_deploy; do if [ "$apiversion" = "--googleapi" ]; then + APIGEE_TOKEN=$(gcloud auth print-access-token); sackmesser deploy -d "$SF" "$apiversion" "$async_flag" \ -t "$APIGEE_TOKEN" -o "$APIGEE_X_ORG" -e "$APIGEE_X_ENV" \ --description "See Apigee DevRel references/common-shared-flows" @@ -58,8 +58,10 @@ for SF in $sf_to_deploy; do fi done + if [ -n "$async_flag" ] && [ "$apiversion" = "--googleapi" ]; then for SF in $sf_to_deploy; do + APIGEE_TOKEN=$(gcloud auth print-access-token); sackmesser await sharedflow "$(basename "$SF")" "$apiversion" \ -t "$APIGEE_TOKEN" -o "$APIGEE_X_ORG" -e "$APIGEE_X_ENV" done From 1d64cd978b00b81431a162411b5d219e1f3ea8cb Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 26 Apr 2022 08:33:47 +0200 Subject: [PATCH 016/562] fix total pipeline duration display --- tools/pipeline-runner/run-pipelines.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/pipeline-runner/run-pipelines.sh b/tools/pipeline-runner/run-pipelines.sh index 995b49030..e0e99ce21 100755 --- a/tools/pipeline-runner/run-pipelines.sh +++ b/tools/pipeline-runner/run-pipelines.sh @@ -57,7 +57,7 @@ declare -A async_projects=( ) async_pipeline_pids='' -STARTTIME=$(date +%s) +TOTAL_STARTTIME=$(date +%s) # Starting async builds for DIR in ${DIRS//,/ } @@ -92,8 +92,8 @@ for pid in $(echo "$async_pipeline_pids" | tr ";" "\n"); do echo "[INFO] Done #$pid (return=$?)" done -ENDTIME=$(date +%s) -append_pipeline_result "TOTAL PIPELINE,0,$((ENDTIME-STARTTIME))s" +TOTAL_ENDTIME=$(date +%s) +append_pipeline_result "TOTAL PIPELINE,0,$((TOTAL_ENDTIME-TOTAL_STARTTIME))s" # print report echo From b062cbcfeab75362efdb3b45a073f64ecbf99ddc Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 26 Apr 2022 14:42:13 +0200 Subject: [PATCH 017/562] fix package lock (dependabot) --- references/auth-schemes/package-lock.json | 12 ++++++------ references/cicd-pipeline/package-lock.json | 12 ++++++------ .../cicd-sharedflow-pipeline/package-lock.json | 12 ++++++------ references/data-api/package-lock.json | 12 ++++++------ references/identity-facade/package-lock.json | 12 ++++++------ references/js-callout/package-lock.json | 12 ++++++------ references/kvm-admin-api/package-lock.json | 12 ++++++------ references/oauth-admin-api/package-lock.json | 12 ++++++------ references/oidc-mock/package-lock.json | 12 ++++++------ references/product-recommendations/package-lock.json | 12 ++++++------ references/recaptcha-enterprise/package-lock.json | 12 ++++++------ references/recaptcha-enterprise/package.json | 8 ++++---- references/southbound-mtls/package-lock.json | 12 ++++++------ references/threat-protect/package-lock.json | 12 ++++++------ tools/oas-apigee-mock/package-lock.json | 12 ++++++------ 15 files changed, 88 insertions(+), 88 deletions(-) diff --git a/references/auth-schemes/package-lock.json b/references/auth-schemes/package-lock.json index 0e4f39458..a14742035 100644 --- a/references/auth-schemes/package-lock.json +++ b/references/auth-schemes/package-lock.json @@ -231,9 +231,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -2590,9 +2590,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } diff --git a/references/cicd-pipeline/package-lock.json b/references/cicd-pipeline/package-lock.json index 92f86fb93..2107fd9ae 100644 --- a/references/cicd-pipeline/package-lock.json +++ b/references/cicd-pipeline/package-lock.json @@ -1125,9 +1125,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -8353,9 +8353,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/cicd-sharedflow-pipeline/package-lock.json b/references/cicd-sharedflow-pipeline/package-lock.json index 3475dbe96..84c2a126f 100644 --- a/references/cicd-sharedflow-pipeline/package-lock.json +++ b/references/cicd-sharedflow-pipeline/package-lock.json @@ -634,9 +634,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -6244,9 +6244,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/data-api/package-lock.json b/references/data-api/package-lock.json index 11e3923df..1afaded68 100644 --- a/references/data-api/package-lock.json +++ b/references/data-api/package-lock.json @@ -231,9 +231,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -2600,9 +2600,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } diff --git a/references/identity-facade/package-lock.json b/references/identity-facade/package-lock.json index 30fb54fcc..bc461a9bd 100644 --- a/references/identity-facade/package-lock.json +++ b/references/identity-facade/package-lock.json @@ -276,9 +276,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -3396,9 +3396,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/js-callout/package-lock.json b/references/js-callout/package-lock.json index 511cd6771..2faa86245 100644 --- a/references/js-callout/package-lock.json +++ b/references/js-callout/package-lock.json @@ -7089,9 +7089,9 @@ } }, "node_modules/swagger-tools/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -14050,9 +14050,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/kvm-admin-api/package-lock.json b/references/kvm-admin-api/package-lock.json index 8c82eb084..79e5bb945 100644 --- a/references/kvm-admin-api/package-lock.json +++ b/references/kvm-admin-api/package-lock.json @@ -230,9 +230,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -2565,9 +2565,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } diff --git a/references/oauth-admin-api/package-lock.json b/references/oauth-admin-api/package-lock.json index 7f896d52a..ab90ee684 100644 --- a/references/oauth-admin-api/package-lock.json +++ b/references/oauth-admin-api/package-lock.json @@ -248,9 +248,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -2890,9 +2890,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/oidc-mock/package-lock.json b/references/oidc-mock/package-lock.json index a52190663..a0861ed73 100644 --- a/references/oidc-mock/package-lock.json +++ b/references/oidc-mock/package-lock.json @@ -384,9 +384,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -3432,9 +3432,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/product-recommendations/package-lock.json b/references/product-recommendations/package-lock.json index eb0b073dc..8596946b2 100644 --- a/references/product-recommendations/package-lock.json +++ b/references/product-recommendations/package-lock.json @@ -893,9 +893,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -5923,9 +5923,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/recaptcha-enterprise/package-lock.json b/references/recaptcha-enterprise/package-lock.json index db015a314..73b89567b 100644 --- a/references/recaptcha-enterprise/package-lock.json +++ b/references/recaptcha-enterprise/package-lock.json @@ -251,9 +251,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -2912,9 +2912,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/recaptcha-enterprise/package.json b/references/recaptcha-enterprise/package.json index c085ce862..0b7bff8e4 100644 --- a/references/recaptcha-enterprise/package.json +++ b/references/recaptcha-enterprise/package.json @@ -2,10 +2,10 @@ "name": "apigee-recaptcha-enterprise", "version": "1.0.0", "scripts": { - "test": "./node_modules/.bin/cucumber-js --publish-quiet test/integration/features" + "test": "./node_modules/.bin/cucumber-js --publish-quiet test/integration/features" }, "devDependencies": { - "@cucumber/cucumber": "^7.3.0", - "apickli": "^3.0.1" + "@cucumber/cucumber": "^7.3.0", + "apickli": "^3.0.1" } - } +} diff --git a/references/southbound-mtls/package-lock.json b/references/southbound-mtls/package-lock.json index a1d0a2ba1..685a47466 100644 --- a/references/southbound-mtls/package-lock.json +++ b/references/southbound-mtls/package-lock.json @@ -249,9 +249,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -2855,9 +2855,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/references/threat-protect/package-lock.json b/references/threat-protect/package-lock.json index b1d007bd8..d5283a6bd 100644 --- a/references/threat-protect/package-lock.json +++ b/references/threat-protect/package-lock.json @@ -276,9 +276,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -3396,9 +3396,9 @@ } }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" diff --git a/tools/oas-apigee-mock/package-lock.json b/tools/oas-apigee-mock/package-lock.json index b50a7a80a..85764f28e 100644 --- a/tools/oas-apigee-mock/package-lock.json +++ b/tools/oas-apigee-mock/package-lock.json @@ -524,9 +524,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -3571,9 +3571,9 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } From 1c90bc5890d8715e8ae85f2ae6ab568a2927337a Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 26 Apr 2022 18:58:48 +0100 Subject: [PATCH 018/562] Multi-branch pipeline with parameters --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index b42a58943..14e46f371 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -2,6 +2,14 @@ pipeline { agent any + properties([ + parameters([ + string(name: 'API_VERSION', defaultValue: 'google'), + string(name: 'APIGEE_ORG', defaultValue: 'my-org'), + string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1'), + string(name: 'TEST_HOST', defaultValue: 'api.example.com'), + ]) + environment { APIGEE_CREDS = credentials('apigee') From 13e5a0df2560213ad9ea45395688bf7f1064a7c7 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 28 Apr 2022 09:16:05 +0200 Subject: [PATCH 019/562] clean up asm registration when deleting the cluster --- tools/hybrid-quickstart/cloudbuild.yaml | 2 +- tools/hybrid-quickstart/destroy-runtime-gke.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/hybrid-quickstart/cloudbuild.yaml b/tools/hybrid-quickstart/cloudbuild.yaml index a36095cb2..79dfeb11d 100644 --- a/tools/hybrid-quickstart/cloudbuild.yaml +++ b/tools/hybrid-quickstart/cloudbuild.yaml @@ -20,7 +20,7 @@ steps: args: - "-c" - |- - gcloud components update # b/229248353 + gcloud version apt-get update && apt-get install zip -y ./initialize-runtime-gke.sh || touch .failure env: diff --git a/tools/hybrid-quickstart/destroy-runtime-gke.sh b/tools/hybrid-quickstart/destroy-runtime-gke.sh index d56631850..0ec2b429e 100755 --- a/tools/hybrid-quickstart/destroy-runtime-gke.sh +++ b/tools/hybrid-quickstart/destroy-runtime-gke.sh @@ -32,8 +32,11 @@ for persistent_disk in $(gcloud compute disks list --format="value(name)" --filt gcloud compute disks delete "$persistent_disk" --zone="$ZONE" -q done -echo "✅ Apigee hybrid cluster deleted" +for cluster in $(gcloud container hub memberships list --format="value(name)"); do + gcloud container hub memberships delete "$cluster" -q +done +echo "✅ Apigee hybrid cluster deleted" echo "🗑️ Clean up Networking" From ab5b6fdf3d743b195b0df931cf0e7e073fb541ac Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Fri, 29 Apr 2022 23:40:33 +0100 Subject: [PATCH 020/562] Fix parameters{} syntax --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 14e46f371..b18159a04 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -2,13 +2,12 @@ pipeline { agent any - properties([ - parameters([ - string(name: 'API_VERSION', defaultValue: 'google'), - string(name: 'APIGEE_ORG', defaultValue: 'my-org'), - string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1'), - string(name: 'TEST_HOST', defaultValue: 'api.example.com'), - ]) + parameters { + string(name: 'API_VERSION', defaultValue: 'google') + string(name: 'APIGEE_ORG', defaultValue: 'my-org') + string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1') + string(name: 'TEST_HOST', defaultValue: 'api.example.com') + } environment { APIGEE_CREDS = credentials('apigee') From 3c2cae8f27b899ad795c52265fe8ccca5b9cb004 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 12:19:20 +0100 Subject: [PATCH 021/562] Version Check stage --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index b18159a04..ec8ca7862 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -9,6 +9,12 @@ pipeline { string(name: 'TEST_HOST', defaultValue: 'api.example.com') } + tools { + maven 'M3' +// jdk 'JDK' +// nodejs 'NODEJS' + } + environment { APIGEE_CREDS = credentials('apigee') @@ -24,6 +30,15 @@ pipeline { } stages { + stage('Version Check') { + steps { + sendNotifications 'STARTED' + bat "npm -v" + bat "mvn -v" + echo "$apigeeUsername" + echo "Stable Revision: ${env.stable_revision}" + }} + stage('Set Apigee Env and Proxy Suffix') { steps { script{ From c8872352a518c1ec16247f69ffda1cecbb7593bc Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 19:41:31 +0100 Subject: [PATCH 022/562] Wipe out send notifications --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index ec8ca7862..cdc168dcb 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -32,10 +32,8 @@ pipeline { stages { stage('Version Check') { steps { - sendNotifications 'STARTED' bat "npm -v" bat "mvn -v" - echo "$apigeeUsername" echo "Stable Revision: ${env.stable_revision}" }} From d51465ab2fc2cb676fda672f7bb4ea19e74117f9 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 19:45:13 +0100 Subject: [PATCH 023/562] bat to sh --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index cdc168dcb..6ab76786e 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -32,8 +32,8 @@ pipeline { stages { stage('Version Check') { steps { - bat "npm -v" - bat "mvn -v" + sh "npm -v" + sh "mvn -v" echo "Stable Revision: ${env.stable_revision}" }} From b1b2781da6c965692267d34b6e4803235b5a3eae Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 20:41:11 +0100 Subject: [PATCH 024/562] dir experiment --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 6ab76786e..40162fe4f 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -29,6 +29,9 @@ pipeline { // TEST_HOST= 'api.example.com' } +dir( "references/cicd-pipeline" ) { + sh "pwd" + stages { stage('Version Check') { steps { @@ -182,4 +185,5 @@ pipeline { trendsLimit: 10 } } + } } \ No newline at end of file From 9d178342a2aae8ba366d5ef34aa38ab2618a3817 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 20:44:45 +0100 Subject: [PATCH 025/562] custom workspace --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 40162fe4f..ad783573e 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -2,6 +2,9 @@ pipeline { agent any + customWorkspace "references/cicd-pipeline" + + parameters { string(name: 'API_VERSION', defaultValue: 'google') string(name: 'APIGEE_ORG', defaultValue: 'my-org') @@ -29,8 +32,6 @@ pipeline { // TEST_HOST= 'api.example.com' } -dir( "references/cicd-pipeline" ) { - sh "pwd" stages { stage('Version Check') { @@ -185,5 +186,4 @@ dir( "references/cicd-pipeline" ) { trendsLimit: 10 } } - } } \ No newline at end of file From ec8a2e6e4f4da3632109088b953b6ae1860aa130 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 20:47:12 +0100 Subject: [PATCH 026/562] custom workspace in node --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index ad783573e..c4b1ffa7f 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -2,7 +2,9 @@ pipeline { agent any - customWorkspace "references/cicd-pipeline" + node { + customWorkspace "references/cicd-pipeline" + } parameters { From 6b90f7c94d76b85fe03dd3a50acd4683294e1a68 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 20:48:21 +0100 Subject: [PATCH 027/562] custom workspace in node in agent --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index c4b1ffa7f..cfb4838bb 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -1,9 +1,9 @@ pipeline { - agent any - - node { - customWorkspace "references/cicd-pipeline" + agent any { + node { + customWorkspace "references/cicd-pipeline" + } } From 11579baf9bdeb2e2fa74980f29127aa37303cd4a Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 20:54:51 +0100 Subject: [PATCH 028/562] dir in stepss --- .../ci-config/jenkins/Jenkinsfile | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index cfb4838bb..b49114480 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -1,10 +1,6 @@ pipeline { - agent any { - node { - customWorkspace "references/cicd-pipeline" - } - } + agent any parameters { @@ -71,13 +67,17 @@ pipeline { } stage('Install dependencies') { - steps { - sh "npm install --silent --no-fund" + steps { + dir( "references/cicd-pipeline" ) { + + sh "npm install --silent --no-fund" + } } } stage('Static Code Analysis') { steps { + dir( "references/cicd-pipeline" ) { sh "./node_modules/eslint/bin/eslint.js --format html . > eslint-out.html" publishHTML(target: [ @@ -105,9 +105,11 @@ pipeline { sh "rm apigeelint-out.html" } } + } stage('Unit Test') { - steps { + steps { dir( "references/cicd-pipeline" ) { + sh "./node_modules/nyc/bin/nyc.js --reporter=html --reporter=text ./node_modules/mocha/bin/_mocha ./test/unit" publishHTML(target: [ @@ -118,7 +120,7 @@ pipeline { reportFiles: 'index.html', reportName: 'Unit Test Report' ]) - } + } } } stage('Commit Author Extraction') { @@ -138,7 +140,8 @@ pipeline { when { expression { env.API_VERSION == 'apigee'} } - steps { + steps { dir( "references/cicd-pipeline" ) { + sh """ mvn clean install \ -Papigeeapi \ @@ -150,7 +153,7 @@ pipeline { -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" """ - } + } } } stage('Deploy X/hybrid') { From d0a9408f002628319458d71f93a95efcb3bc8030 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 21:37:33 +0100 Subject: [PATCH 029/562] dir in all steps --- .../ci-config/jenkins/Jenkinsfile | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index b49114480..709d435fe 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -67,17 +67,14 @@ pipeline { } stage('Install dependencies') { - steps { - dir( "references/cicd-pipeline" ) { + steps { dir( "references/cicd-pipeline" ) { sh "npm install --silent --no-fund" - } - } + } } } stage('Static Code Analysis') { - steps { - dir( "references/cicd-pipeline" ) { + steps { dir( "references/cicd-pipeline" ) { sh "./node_modules/eslint/bin/eslint.js --format html . > eslint-out.html" publishHTML(target: [ @@ -103,8 +100,7 @@ pipeline { ]); sh "rm apigeelint-out.html" - } - } + } } } stage('Unit Test') { @@ -160,7 +156,7 @@ pipeline { when { expression { env.API_VERSION == 'google'} } - steps { + steps { dir( "references/cicd-pipeline" ) { sh """ APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" @@ -172,23 +168,23 @@ pipeline { -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" """ - } + } } } stage('Functional Test') { - steps { + steps { dir( "references/cicd-pipeline" ) { sh "TEST_HOST=${env.TEST_HOST} node ./node_modules/.bin/cucumber-js ./target/test/integration --format json:./target/reports.json" - } + } } } } post { - always { + always { dir( "references/cicd-pipeline" ) { cucumber reportTitle: 'Apickli test report', fileIncludePattern: '**/reports.json', jsonReportDirectory: "target", sortingMethod: 'ALPHABETICAL', trendsLimit: 10 - } + } } } } \ No newline at end of file From cfad57b643580f6d56e46f8abf2918241d0a435a Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 22:10:33 +0100 Subject: [PATCH 030/562] gcp sa creds --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 709d435fe..33adf7e3e 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -157,7 +157,10 @@ pipeline { expression { env.API_VERSION == 'google'} } steps { dir( "references/cicd-pipeline" ) { + withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh """ + + gcloud auth activate-service-account --key-file=${GC_KEY}" APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" mvn clean install \ From 3fbf658ebc68d45b2ef50db5bc5b7e253ecde3da Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 22:12:47 +0100 Subject: [PATCH 031/562] gcp sa creds; typo { --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 33adf7e3e..578ac9d59 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -171,6 +171,7 @@ pipeline { -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" """ + } } } } From d2bbfc0b9fec32bdd5d6b052455e13f269dd1da4 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 22:16:22 +0100 Subject: [PATCH 032/562] gcp sa creds; typo {; typo dblqt --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 578ac9d59..829f0050a 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -160,7 +160,7 @@ pipeline { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh """ - gcloud auth activate-service-account --key-file=${GC_KEY}" + gcloud auth activate-service-account --key-file=${GC_KEY} APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" mvn clean install \ From c444204703423915ccb2e6b0a1397e3449178974 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 1 May 2022 22:24:47 +0100 Subject: [PATCH 033/562] gcp sa creds; typo {; typo dblqt; sa ref --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 829f0050a..636055775 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -161,7 +161,7 @@ pipeline { sh """ gcloud auth activate-service-account --key-file=${GC_KEY} - APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" + APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" mvn clean install \ -Pgoogleapi \ From 6b514660ed548338b9e460761ed04ee24adc8030 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 3 May 2022 09:47:57 +0200 Subject: [PATCH 034/562] change superlinter referece in pipeline.md to megalinter --- PIPELINES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PIPELINES.md b/PIPELINES.md index 595e4ee67..eb8bd32e1 100644 --- a/PIPELINES.md +++ b/PIPELINES.md @@ -38,7 +38,7 @@ The pipeline context also has the `gcloud` context of a serviceaccount user ## Static Checks -Static code checks such as [Super Linter](https://github.com/github/super-linter) +Static code checks such as [Mega Linter](https://megalinter.github.io/) and [In Solidarity](https://github.com/apps/in-solidarity) are part of the linter workflow. They do not need to be included in your pipeline script. We recommend you allow the DevRel [workflows](.github/workflows) to automatically From 69a02fe73ed7860c5c8b38471a864fe8451d53bb Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 09:49:15 +0100 Subject: [PATCH 035/562] env WORK_DIR var --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 636055775..d19f88bb9 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -8,6 +8,7 @@ pipeline { string(name: 'APIGEE_ORG', defaultValue: 'my-org') string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1') string(name: 'TEST_HOST', defaultValue: 'api.example.com') + string(name: 'WORK_DIR', defaultValue: 'references/cicd-pipeline') } tools { @@ -67,14 +68,14 @@ pipeline { } stage('Install dependencies') { - steps { dir( "references/cicd-pipeline" ) { + steps { dir( "env.WORK_DIR" ) { sh "npm install --silent --no-fund" } } } stage('Static Code Analysis') { - steps { dir( "references/cicd-pipeline" ) { + steps { dir( "env.WORK_DIR" ) { sh "./node_modules/eslint/bin/eslint.js --format html . > eslint-out.html" publishHTML(target: [ @@ -104,7 +105,7 @@ pipeline { } stage('Unit Test') { - steps { dir( "references/cicd-pipeline" ) { + steps { dir( "env.WORK_DIR" ) { sh "./node_modules/nyc/bin/nyc.js --reporter=html --reporter=text ./node_modules/mocha/bin/_mocha ./test/unit" @@ -136,7 +137,7 @@ pipeline { when { expression { env.API_VERSION == 'apigee'} } - steps { dir( "references/cicd-pipeline" ) { + steps { dir( "env.WORK_DIR" ) { sh """ mvn clean install \ @@ -156,7 +157,7 @@ pipeline { when { expression { env.API_VERSION == 'google'} } - steps { dir( "references/cicd-pipeline" ) { + steps { dir( "env.WORK_DIR" ) { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh """ @@ -176,14 +177,14 @@ pipeline { } stage('Functional Test') { - steps { dir( "references/cicd-pipeline" ) { + steps { dir( "env.WORK_DIR" ) { sh "TEST_HOST=${env.TEST_HOST} node ./node_modules/.bin/cucumber-js ./target/test/integration --format json:./target/reports.json" } } } } post { - always { dir( "references/cicd-pipeline" ) { + always { dir( "env.WORK_DIR" ) { cucumber reportTitle: 'Apickli test report', fileIncludePattern: '**/reports.json', jsonReportDirectory: "target", @@ -191,4 +192,4 @@ pipeline { trendsLimit: 10 } } } -} \ No newline at end of file +} From b866e18617e8fbd7eb24e7700fc855df7b94326b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 09:58:47 +0100 Subject: [PATCH 036/562] env WORK_DIR var; subst brackets --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index d19f88bb9..2255bea06 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -68,14 +68,14 @@ pipeline { } stage('Install dependencies') { - steps { dir( "env.WORK_DIR" ) { + steps { dir( "${env.WORK_DIR}" ) { sh "npm install --silent --no-fund" } } } stage('Static Code Analysis') { - steps { dir( "env.WORK_DIR" ) { + steps { dir( "${env.WORK_DIR}" ) { sh "./node_modules/eslint/bin/eslint.js --format html . > eslint-out.html" publishHTML(target: [ @@ -105,7 +105,7 @@ pipeline { } stage('Unit Test') { - steps { dir( "env.WORK_DIR" ) { + steps { dir( "${env.WORK_DIR}" ) { sh "./node_modules/nyc/bin/nyc.js --reporter=html --reporter=text ./node_modules/mocha/bin/_mocha ./test/unit" @@ -137,7 +137,7 @@ pipeline { when { expression { env.API_VERSION == 'apigee'} } - steps { dir( "env.WORK_DIR" ) { + steps { dir( "${env.WORK_DIR}" ) { sh """ mvn clean install \ @@ -157,7 +157,7 @@ pipeline { when { expression { env.API_VERSION == 'google'} } - steps { dir( "env.WORK_DIR" ) { + steps { dir( "${env.WORK_DIR}" ) { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh """ @@ -177,14 +177,14 @@ pipeline { } stage('Functional Test') { - steps { dir( "env.WORK_DIR" ) { + steps { dir( "${env.WORK_DIR}" ) { sh "TEST_HOST=${env.TEST_HOST} node ./node_modules/.bin/cucumber-js ./target/test/integration --format json:./target/reports.json" } } } } post { - always { dir( "env.WORK_DIR" ) { + always { dir( "${env.WORK_DIR}" ) { cucumber reportTitle: 'Apickli test report', fileIncludePattern: '**/reports.json', jsonReportDirectory: "target", From 3cfeef88ffac4eb60d64c0d4393ed8e34e065d06 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 16:46:52 +0100 Subject: [PATCH 037/562] secret: get rid of interpolation --- .../ci-config/jenkins/Jenkinsfile | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 2255bea06..f81f7129d 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -9,12 +9,7 @@ pipeline { string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1') string(name: 'TEST_HOST', defaultValue: 'api.example.com') string(name: 'WORK_DIR', defaultValue: 'references/cicd-pipeline') - } - - tools { - maven 'M3' -// jdk 'JDK' -// nodejs 'NODEJS' + choice(name: 'GCP_SA_AUTH', choices: [ "vm_scope", "jenkins-scope" ], description: 'GCP SA Scope' ) } environment { @@ -158,16 +153,28 @@ pipeline { expression { env.API_VERSION == 'google'} } steps { dir( "${env.WORK_DIR}" ) { - withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { - sh """ - gcloud auth activate-service-account --key-file=${GC_KEY} - APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" + if (env.GCP_SA_AUTH == "jenkins-scope") { + withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { + sh ''' + + gcloud auth activate-service-account --key-file=${GC_KEY} + env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" + ''' + } + + } else { + sh """ + env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" + """ + } + + sh """ mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ - -Dtoken="\$APIGEE_SA_TOKEN" \ + -Dtoken="\${env.APIGEE_SA_TOKEN}" \ -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" From b2b678d1dfd221db46ef71adefae57c098fb4d98 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 16:50:42 +0100 Subject: [PATCH 038/562] secret: get rid of interpolation; figure bracket type --- .../ci-config/jenkins/Jenkinsfile | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index f81f7129d..ac202f2c7 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -156,19 +156,18 @@ pipeline { if (env.GCP_SA_AUTH == "jenkins-scope") { - withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { - sh ''' - - gcloud auth activate-service-account --key-file=${GC_KEY} - env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" - ''' - } + withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { + sh ''' + gcloud auth activate-service-account --key-file=${GC_KEY} + env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" + ''' + } - } else { - sh """ + } else { + sh ''' env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" - """ - } + ''' + } sh """ mvn clean install \ @@ -180,7 +179,7 @@ pipeline { -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" """ } - } } + } } stage('Functional Test') { From d7f55ca5b675d9801b4eee52eb4404912e9d64f0 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 16:58:24 +0100 Subject: [PATCH 039/562] secret: if/steps --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index ac202f2c7..0d3a4c259 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -154,22 +154,22 @@ pipeline { } steps { dir( "${env.WORK_DIR}" ) { + sh ''' if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { - sh ''' gcloud auth activate-service-account --key-file=${GC_KEY} env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" - ''' + // ''' } } else { - sh ''' + // sh ''' env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" - ''' + // ''' } - sh """ +// sh """ mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ @@ -177,9 +177,9 @@ pipeline { -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" - """ - } - } +// """ + ''' + } } } stage('Functional Test') { From 79a6b07442dbfe62e054c1d963d93f14cc0a9cf9 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:02:49 +0100 Subject: [PATCH 040/562] secret: if/steps --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 0d3a4c259..d0ebc196c 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -154,22 +154,23 @@ pipeline { } steps { dir( "${env.WORK_DIR}" ) { - sh ''' - +script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { + sh ''' + gcloud auth activate-service-account --key-file=${GC_KEY} env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" - // ''' + ''' } } else { - // sh ''' + sh ''' env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" - // ''' + ''' } -// sh """ + sh ''' mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ @@ -177,8 +178,8 @@ pipeline { -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" -// """ - ''' + ''' +} } } } From bccf0feb1cd0af1bdc883ccb2256d850c57751cf Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:25:26 +0100 Subject: [PATCH 041/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index d0ebc196c..9403451b6 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,7 +158,6 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh ''' - gcloud auth activate-service-account --key-file=${GC_KEY} env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" ''' @@ -170,7 +169,7 @@ script { ''' } - sh ''' + sh """ mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ @@ -178,7 +177,7 @@ script { -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" - ''' + """ } } } } From 7312701c2c0c8b25905ed633435d06d1c2699b23 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:29:00 +0100 Subject: [PATCH 042/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 9403451b6..4d6a6a595 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -157,16 +157,14 @@ pipeline { script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { - sh ''' - gcloud auth activate-service-account --key-file=${GC_KEY} - env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" - ''' + sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' + + env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" + } } else { - sh ''' env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" - ''' } sh """ From b3ddb23cfb39fc8fc84b70d32f0e8e85892eb50e Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:33:26 +0100 Subject: [PATCH 043/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 4d6a6a595..067ae1062 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -157,9 +157,11 @@ pipeline { script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { - sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' + sh ''' + gcloud auth activate-service-account --key-file=${GC_KEY}' - env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" + APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" + ''' } From 629f03d7129198cf5e43912e2ebaccb54adb09f0 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:35:05 +0100 Subject: [PATCH 044/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 067ae1062..750286c4c 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,7 +158,7 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh ''' - gcloud auth activate-service-account --key-file=${GC_KEY}' + gcloud auth activate-service-account --key-file=${GC_KEY} APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" ''' From 41ea93a7b49fa79cc4d9970e9e4457a1941ae8e2 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:38:38 +0100 Subject: [PATCH 045/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 750286c4c..d2bacbadc 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -160,8 +160,8 @@ script { sh ''' gcloud auth activate-service-account --key-file=${GC_KEY} - APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" ''' + env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}") } From 1c3e201359ec3017de031ca2e96965fe1e68aed3 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:40:54 +0100 Subject: [PATCH 046/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index d2bacbadc..3efcdbf95 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -161,7 +161,7 @@ script { gcloud auth activate-service-account --key-file=${GC_KEY} ''' - env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}") + env.APIGEE_SA_TOKEN=sh('echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"') } From 79bf4749f2d4d279a901bd36adb2e82a3ad157ec Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:43:04 +0100 Subject: [PATCH 047/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 3efcdbf95..023264e93 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -157,13 +157,9 @@ pipeline { script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { - sh ''' - gcloud auth activate-service-account --key-file=${GC_KEY} - - ''' - env.APIGEE_SA_TOKEN=sh('echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"') - + sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' } + env.APIGEE_SA_TOKEN=sh('echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"') } else { env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" From 883b5ce7232819c0243dd683ad1884bd5e8857db Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:44:55 +0100 Subject: [PATCH 048/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 023264e93..ead662ed9 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -159,7 +159,7 @@ script { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' } - env.APIGEE_SA_TOKEN=sh('echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"') + env.APIGEE_SA_TOKEN=sh((script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}", returnStdout: true).trim() } else { env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" From bfc4795005053288ba478764d0571af7cdf62856 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:45:42 +0100 Subject: [PATCH 049/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index ead662ed9..1adc66537 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -159,7 +159,7 @@ script { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' } - env.APIGEE_SA_TOKEN=sh((script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}", returnStdout: true).trim() + env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}", returnStdout: true).trim() } else { env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" From 4d80eb9ea86d05992f67ea790eeaeacffe3e76e4 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:47:16 +0100 Subject: [PATCH 050/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 1adc66537..d6e51ffa9 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -159,7 +159,8 @@ script { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' } - env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}", returnStdout: true).trim() +// env.APIGEE_SA_TOKEN=sh(script:'"\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() + env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" } else { env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" From 10780de0ffe94b4e25f616ed2ca86779fb4c43fe Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:49:25 +0100 Subject: [PATCH 051/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index d6e51ffa9..a2af52988 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -159,8 +159,8 @@ script { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' } -// env.APIGEE_SA_TOKEN=sh(script:'"\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() - env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" + env.APIGEE_SA_TOKEN=sh(script:'"\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() +// env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" } else { env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" From e410fa3e6d364fa59132f30e31330572528a1a2b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 17:55:23 +0100 Subject: [PATCH 052/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index a2af52988..997ad56ce 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -159,7 +159,7 @@ script { withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' } - env.APIGEE_SA_TOKEN=sh(script:'"\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() + env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" } else { From 0af0a2fcfbb5990a02e4e9a6652ece558f50dc48 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:13:12 +0100 Subject: [PATCH 053/562] secret: if/steps --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 997ad56ce..f822b993e 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -156,15 +156,17 @@ pipeline { script { if (env.GCP_SA_AUTH == "jenkins-scope") { - withCredentials([file(credentialsId: 'apigee', variable: 'GC_KEY')]) { - sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' - } - env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() + withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { +// sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' + env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" + +// } +// env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" - } else { - env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" - } +// } else { +// env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" +// } sh """ mvn clean install \ From cc487884fa8f12917392764e507d506eb6544a65 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:23:00 +0100 Subject: [PATCH 054/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index f822b993e..f9ec09f6f 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,7 +158,8 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' - env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" +// env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") + env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth application-defautl print-access-token)}"', returnStdout: true).trim() // } // env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() @@ -168,6 +169,9 @@ script { // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" // } + +echo env.APIGEE_SA_TOKEN + sh """ mvn clean install \ -Pgoogleapi \ From fa07fd83ace9f5682efffa0296e9bd497fa9d004 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:23:54 +0100 Subject: [PATCH 055/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index f9ec09f6f..f35d9bed2 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -161,7 +161,9 @@ script { // env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth application-defautl print-access-token)}"', returnStdout: true).trim() -// } + } + + // env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" @@ -170,7 +172,6 @@ script { // } -echo env.APIGEE_SA_TOKEN sh """ mvn clean install \ From e345c03548f6177eaeef05887cab19357e3e1ac1 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:25:57 +0100 Subject: [PATCH 056/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index f35d9bed2..3cdf98bde 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -162,8 +162,8 @@ script { env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth application-defautl print-access-token)}"', returnStdout: true).trim() } - - + } + // env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" From bd7a0bd390c14011470bb8cffd7266645bf7e2bc Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:27:20 +0100 Subject: [PATCH 057/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 3cdf98bde..c4cd1154e 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -159,7 +159,7 @@ script { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' // env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") - env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth application-defautl print-access-token)}"', returnStdout: true).trim() + env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}"', returnStdout: true).trim() } } From 0ebe60caa34565a97a1e8201c563a485e0106116 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:30:51 +0100 Subject: [PATCH 058/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index c4cd1154e..ea3c0ac57 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -159,7 +159,10 @@ script { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' // env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") - env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}"', returnStdout: true).trim() + + env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") + + //', returnStdout: true).trim() } } From 7976b435c3ac43a77f2b526be8c03ceb4fba98aa Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:32:47 +0100 Subject: [PATCH 059/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index ea3c0ac57..190fba402 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -160,7 +160,7 @@ script { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' // env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") - env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") + env.APIGEE_SA_TOKEN=sh("echo \${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") //', returnStdout: true).trim() From 9d4bd3f9359e302f200969ca4538267ba25b495b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:35:22 +0100 Subject: [PATCH 060/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 190fba402..4a4812e85 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,7 +158,7 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' -// env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") +// env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() env.APIGEE_SA_TOKEN=sh("echo \${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") From 705686d2314d8a41577fcec4320358e7c2cda847 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:38:06 +0100 Subject: [PATCH 061/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 4a4812e85..591a2737f 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -160,7 +160,7 @@ script { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' // env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() - env.APIGEE_SA_TOKEN=sh("echo \${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}") + env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" //', returnStdout: true).trim() From 11a5d6bf09373e766aef997a677cb985d1d93707 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:39:40 +0100 Subject: [PATCH 062/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 591a2737f..d89625afe 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,9 +158,9 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' -// env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() + env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() - env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" +// env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" //', returnStdout: true).trim() From 146ebcc3a8dff1713842a7d89d237ef4eb5dfa06 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:43:51 +0100 Subject: [PATCH 063/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index d89625afe..e4518ddf8 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,7 +158,7 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' - env.APIGEE_SA_TOKEN=sh("\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() + env.APIGEE_SA_TOKEN=sh(script:"\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" From ee59559350811101b4bd44a874b68bcaeb6a86a7 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:44:59 +0100 Subject: [PATCH 064/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index e4518ddf8..9f4a3c4e1 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,7 +158,7 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' - env.APIGEE_SA_TOKEN=sh(script:"\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() + env.APIGEE_SA_TOKEN=sh(script:"echo \${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" From 3cc1bb5eda05b389fab129b1b769f2c0e2764456 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:48:10 +0100 Subject: [PATCH 065/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 9f4a3c4e1..70235f513 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -158,15 +158,19 @@ script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { // sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' - env.APIGEE_SA_TOKEN=sh(script:"echo \${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() +// env.APIGEE_SA_TOKEN=sh(script:"echo \${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() -// env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" +// env.APIGEE_SA_TOKEN="gcloud auth application-default print-access-token" + + env.SA_TOKEN=sh(script:"gcloud auth print-access-token"', returnStdout: true).trim() //', returnStdout: true).trim() } } +echo "SA_TOKEN: ${env.SA_TOKEN}" + // env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" From 35b80618486e10352adbd88f772ea9519142dfc4 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:49:04 +0100 Subject: [PATCH 066/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 70235f513..1db5c6ec4 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -162,7 +162,7 @@ script { // env.APIGEE_SA_TOKEN="gcloud auth application-default print-access-token" - env.SA_TOKEN=sh(script:"gcloud auth print-access-token"', returnStdout: true).trim() + env.SA_TOKEN=sh(script:'gcloud auth print-access-token', returnStdout: true).trim() //', returnStdout: true).trim() From 2fe0f5f59fc3f3dcee80ed203fe62d035849103a Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:52:07 +0100 Subject: [PATCH 067/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 1db5c6ec4..26fa3ec07 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -184,7 +184,7 @@ echo "SA_TOKEN: ${env.SA_TOKEN}" mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ - -Dtoken="\${env.APIGEE_SA_TOKEN}" \ + -Dtoken="${env.APIGEE_SA_TOKEN}" \ -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" From f1707eca9ace7999424227f68c6add2ca03196d1 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:55:29 +0100 Subject: [PATCH 068/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 26fa3ec07..73808ffef 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -171,6 +171,8 @@ script { echo "SA_TOKEN: ${env.SA_TOKEN}" +\\env.APIGEE_SA_TOKEN="${env.APIGEE_TOKEN + // env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" @@ -181,10 +183,12 @@ echo "SA_TOKEN: ${env.SA_TOKEN}" sh """ + APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-SA_TOKEN}" + mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ - -Dtoken="${env.APIGEE_SA_TOKEN}" \ + -Dtoken="\${env.APIGEE_SA_TOKEN}" \ -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" From ae70cc08c36e049361f48aa932a4d144db383a27 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:56:13 +0100 Subject: [PATCH 069/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 73808ffef..4afb83fb2 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -171,7 +171,6 @@ script { echo "SA_TOKEN: ${env.SA_TOKEN}" -\\env.APIGEE_SA_TOKEN="${env.APIGEE_TOKEN // env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() // env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" From 5b93abddfe2c24fbf0f828f1cc571c03fbed1fba Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:57:58 +0100 Subject: [PATCH 070/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 4afb83fb2..3d3d67168 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -182,7 +182,7 @@ echo "SA_TOKEN: ${env.SA_TOKEN}" sh """ - APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-SA_TOKEN}" + APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\${SA_TOKEN}}" mvn clean install \ -Pgoogleapi \ From 977148b7a346ed4706badc4ebd039fb89fe6bf28 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 18:59:55 +0100 Subject: [PATCH 071/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 3d3d67168..379c4e52d 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -187,7 +187,7 @@ echo "SA_TOKEN: ${env.SA_TOKEN}" mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ - -Dtoken="\${env.APIGEE_SA_TOKEN}" \ + -Dtoken="\${APIGEE_SA_TOKEN}" \ -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" From cf8955210f7548de9b5e79959bb02fdfdd0d0b07 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 19:05:31 +0100 Subject: [PATCH 072/562] secret: if/steps --- .../ci-config/jenkins/Jenkinsfile | 54 +++++++------------ 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 379c4e52d..0ca1aa6ef 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -154,45 +154,29 @@ pipeline { } steps { dir( "${env.WORK_DIR}" ) { -script { - if (env.GCP_SA_AUTH == "jenkins-scope") { - withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { -// sh 'gcloud auth activate-service-account --key-file=${GC_KEY}' -// env.APIGEE_SA_TOKEN=sh(script:"echo \${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}", returnStdout: true).trim() - -// env.APIGEE_SA_TOKEN="gcloud auth application-default print-access-token" - - env.SA_TOKEN=sh(script:'gcloud auth print-access-token', returnStdout: true).trim() - - //', returnStdout: true).trim() + // Token precedence: env var; jenkins-scope sa; vm-scope sa; + script { + if (env.GCP_SA_AUTH == "jenkins-scope") { + withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { + env.SA_TOKEN=sh(script:'gcloud auth print-access-token', returnStdout: true).trim() + } + } else { + env.SA_TOKEN=sh(script:'gcloud auth print-access-token', returnStdout: true).trim() } - } - -echo "SA_TOKEN: ${env.SA_TOKEN}" - - -// env.APIGEE_SA_TOKEN=sh(script:'echo "\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}"', returnStdout: true).trim() -// env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth print-access-token)}" - -// } else { -// env.APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\$(gcloud auth application-default print-access-token)}" -// } - - - sh """ + sh """ APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\${SA_TOKEN}}" - - mvn clean install \ - -Pgoogleapi \ - -Denv="${env.APIGEE_ENV}" \ - -Dtoken="\${APIGEE_SA_TOKEN}" \ - -Dorg="${env.APIGEE_ORG}" \ - -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ - -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" - """ -} + + mvn clean install \ + -Pgoogleapi \ + -Denv="${env.APIGEE_ENV}" \ + -Dtoken="\${APIGEE_SA_TOKEN}" \ + -Dorg="${env.APIGEE_ORG}" \ + -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ + -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" + """ + } } } } From 927da886de2845babed5c685bea7893ba90e90e6 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 19:12:48 +0100 Subject: [PATCH 073/562] secret: if/steps --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 0ca1aa6ef..7c7be23e9 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -9,7 +9,7 @@ pipeline { string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1') string(name: 'TEST_HOST', defaultValue: 'api.example.com') string(name: 'WORK_DIR', defaultValue: 'references/cicd-pipeline') - choice(name: 'GCP_SA_AUTH', choices: [ "vm_scope", "jenkins-scope" ], description: 'GCP SA Scope' ) + choice(name: 'GCP_SA_AUTH', choices: [ "vm-scope", "jenkins-scope" ], description: 'GCP SA Scope' ) } environment { @@ -162,7 +162,7 @@ pipeline { env.SA_TOKEN=sh(script:'gcloud auth print-access-token', returnStdout: true).trim() } } else { - env.SA_TOKEN=sh(script:'gcloud auth print-access-token', returnStdout: true).trim() + env.SA_TOKEN=sh(script:'gcloud auth application-default print-access-token', returnStdout: true).trim() } sh """ From 1e3a394d27cce3fd38f6b88f54b5c31df770f4e4 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 21:45:56 +0100 Subject: [PATCH 074/562] envs/params precedence --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 7c7be23e9..25e15a5f3 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -15,6 +15,9 @@ pipeline { environment { APIGEE_CREDS = credentials('apigee') + if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION } + + // Multiple options for setting the Apigee deployment target config: // 1. As a jenkins global property at ${JENKINS_URL}/configure if you don't have access to edit this file // 2. As a branch specific environment variable in the first pipeline stage @@ -70,7 +73,7 @@ pipeline { } stage('Static Code Analysis') { - steps { dir( "${env.WORK_DIR}" ) { + steps { dir( "${env.WORK_DIR}" ) { sh "./node_modules/eslint/bin/eslint.js --format html . > eslint-out.html" publishHTML(target: [ @@ -132,7 +135,7 @@ pipeline { when { expression { env.API_VERSION == 'apigee'} } - steps { dir( "${env.WORK_DIR}" ) { + steps { dir( "${env.WORK_DIR}" ) { sh """ mvn clean install \ @@ -152,7 +155,7 @@ pipeline { when { expression { env.API_VERSION == 'google'} } - steps { dir( "${env.WORK_DIR}" ) { + steps { dir( "${env.WORK_DIR}" ) { // Token precedence: env var; jenkins-scope sa; vm-scope sa; @@ -188,7 +191,7 @@ pipeline { } post { - always { dir( "${env.WORK_DIR}" ) { + always { dir( "${env.WORK_DIR}" ) { cucumber reportTitle: 'Apickli test report', fileIncludePattern: '**/reports.json', jsonReportDirectory: "target", From d7aa8ce16ef4f2d54aac8cf14103929699f5aa35 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 21:48:35 +0100 Subject: [PATCH 075/562] envs/params precedence --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 25e15a5f3..d41d1a9de 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -15,7 +15,6 @@ pipeline { environment { APIGEE_CREDS = credentials('apigee') - if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION } // Multiple options for setting the Apigee deployment target config: @@ -40,6 +39,14 @@ pipeline { stage('Set Apigee Env and Proxy Suffix') { steps { + +println "====" +println env.API_VERSION + + + if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION } + + script{ // Main branch for Apigee test environment if (env.GIT_BRANCH == "main") { From 60713b0cb4100e97500a84fc151f354ae32fc0a2 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 21:49:25 +0100 Subject: [PATCH 076/562] envs/params precedence --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index d41d1a9de..7eb9dfdc2 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -40,6 +40,8 @@ pipeline { stage('Set Apigee Env and Proxy Suffix') { steps { + script{ + println "====" println env.API_VERSION @@ -47,7 +49,8 @@ println env.API_VERSION if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION } - script{ + + // Main branch for Apigee test environment if (env.GIT_BRANCH == "main") { env.APIGEE_DEPLOYMENT_SUFFIX = "" From 68a6da0294c2ff190adf2709b63ac6ea1201ab79 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 21:50:35 +0100 Subject: [PATCH 077/562] envs/params precedence --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 7eb9dfdc2..dbd248776 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -4,7 +4,7 @@ pipeline { parameters { - string(name: 'API_VERSION', defaultValue: 'google') + string(name: 'API_VERSION_P', defaultValue: 'google') string(name: 'APIGEE_ORG', defaultValue: 'my-org') string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1') string(name: 'TEST_HOST', defaultValue: 'api.example.com') @@ -46,9 +46,10 @@ println "====" println env.API_VERSION - if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION } + if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION_P } +println env.API_VERSION // Main branch for Apigee test environment From 00002fcbb8a0fe76a65fefd7036a10e7f4bed43b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 21:57:51 +0100 Subject: [PATCH 078/562] envs/params precedence --- .../ci-config/jenkins/Jenkinsfile | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index dbd248776..c7b85054b 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -5,11 +5,11 @@ pipeline { parameters { string(name: 'API_VERSION_P', defaultValue: 'google') - string(name: 'APIGEE_ORG', defaultValue: 'my-org') - string(name: 'APIGEE_TEST_ENV', defaultValue: 'test1') - string(name: 'TEST_HOST', defaultValue: 'api.example.com') - string(name: 'WORK_DIR', defaultValue: 'references/cicd-pipeline') - choice(name: 'GCP_SA_AUTH', choices: [ "vm-scope", "jenkins-scope" ], description: 'GCP SA Scope' ) + string(name: 'APIGEE_ORG_P', defaultValue: 'my-org') + string(name: 'APIGEE_TEST_ENV_P', defaultValue: 'test1') + string(name: 'TEST_HOST_P', defaultValue: 'api.example.com') + string(name: 'WORK_DIR_P', defaultValue: 'references/cicd-pipeline') + choice(name: 'GCP_SA_AUTH_P', choices: [ "vm-scope", "jenkins-scope" ], description: 'GCP SA Scope' ) } environment { @@ -39,18 +39,15 @@ pipeline { stage('Set Apigee Env and Proxy Suffix') { steps { - script{ -println "====" -println env.API_VERSION - - - if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION_P } - - -println env.API_VERSION - + // env var/param precedence + if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION_P } + if( ! env.APIGEE_ORG ){ env.APIGEE_ORG = params.APIGEE_ORG_P } + if( ! env.APIGEE_TEST_ENV ){ env.APIGEE_TEST_ENV = params.APIGEE_TEST_ENV_P } + if( ! env.TEST_HOST ){ env.TEST_HOST = params.TEST_HOST_P } + if( ! env.WORK_DIR ){ env.WORK_DIR = params.WORK_DIR_P } + if( ! env.GCP_SA_AUTH ){ env.GCP_SA_AUTH = params.GCP_SA_AUTH_P } // Main branch for Apigee test environment if (env.GIT_BRANCH == "main") { From 72808bf822e6e6825d250e2e33aafe104f7c297f Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 22:17:38 +0100 Subject: [PATCH 079/562] envs/params precedence --- .../ci-config/jenkins/Jenkinsfile | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index c7b85054b..742f629bc 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -7,16 +7,23 @@ pipeline { string(name: 'API_VERSION_P', defaultValue: 'google') string(name: 'APIGEE_ORG_P', defaultValue: 'my-org') string(name: 'APIGEE_TEST_ENV_P', defaultValue: 'test1') + string(name: 'APIGEE_PROD_ENV_P', defaultValue: '') string(name: 'TEST_HOST_P', defaultValue: 'api.example.com') string(name: 'WORK_DIR_P', defaultValue: 'references/cicd-pipeline') choice(name: 'GCP_SA_AUTH_P', choices: [ "vm-scope", "jenkins-scope" ], description: 'GCP SA Scope' ) + + string(name: 'APIGEE_USER_P', defaultValue: 'not-used') + string(name: 'APIGEE_PASS_P', defaultValue: 'not-used') + string(name: 'APIGEE_TOKEN_P', defaultValue: 'null') + + string(name: 'GIT_BRANCH_P', defaultValue: 'nightly') + string(name: 'AUTHOR_EMAIL_P', defaultValue: 'cicd@apigee.google.com') + } environment { APIGEE_CREDS = credentials('apigee') - - // Multiple options for setting the Apigee deployment target config: // 1. As a jenkins global property at ${JENKINS_URL}/configure if you don't have access to edit this file // 2. As a branch specific environment variable in the first pipeline stage @@ -34,7 +41,6 @@ pipeline { steps { sh "npm -v" sh "mvn -v" - echo "Stable Revision: ${env.stable_revision}" }} stage('Set Apigee Env and Proxy Suffix') { @@ -45,10 +51,18 @@ pipeline { if( ! env.API_VERSION ){ env.API_VERSION = params.API_VERSION_P } if( ! env.APIGEE_ORG ){ env.APIGEE_ORG = params.APIGEE_ORG_P } if( ! env.APIGEE_TEST_ENV ){ env.APIGEE_TEST_ENV = params.APIGEE_TEST_ENV_P } + if( ! env.APIGEE_PROD_ENV ){ env.APIGEE_TEST_ENV = params.APIGEE_PROD_ENV_P } if( ! env.TEST_HOST ){ env.TEST_HOST = params.TEST_HOST_P } if( ! env.WORK_DIR ){ env.WORK_DIR = params.WORK_DIR_P } if( ! env.GCP_SA_AUTH ){ env.GCP_SA_AUTH = params.GCP_SA_AUTH_P } + if( ! env.APIGEE_USER ){ env.APIGEE_USER = params.APIGEE_USER_P } + if( ! env.APIGEE_PASS ){ env.APIGEE_PASS = params.APIGEE_PASS_P } + if( ! env.APIGEE_TOKEN ){ env.APIGEE_TOKEN = params.APIGEE_TOKEN_P } + + if( ! env.GIT_BRANCH ){ env.GIT_BRANCH = params.GIT_BRANCH_P } + if( ! env.AUTHOR_EMAIL ){ env.AUTHOR_EMAIL = params.AUTHOR_EMAIL_P } + // Main branch for Apigee test environment if (env.GIT_BRANCH == "main") { env.APIGEE_DEPLOYMENT_SUFFIX = "" From 6550d66dc3b1847f31ab3d8ec56de237599d165b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 3 May 2022 22:21:35 +0100 Subject: [PATCH 080/562] envs/params precedence --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 742f629bc..33a276fe8 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -14,7 +14,7 @@ pipeline { string(name: 'APIGEE_USER_P', defaultValue: 'not-used') string(name: 'APIGEE_PASS_P', defaultValue: 'not-used') - string(name: 'APIGEE_TOKEN_P', defaultValue: 'null') + string(name: 'APIGEE_TOKEN_P', defaultValue: '') string(name: 'GIT_BRANCH_P', defaultValue: 'nightly') string(name: 'AUTHOR_EMAIL_P', defaultValue: 'cicd@apigee.google.com') From 01966d2b23627683775d6d6bbb80d7a560d3930c Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 4 May 2022 09:40:42 +0200 Subject: [PATCH 081/562] Adapt to new workdir syntax --- references/cicd-pipeline/README.md | 2 +- .../ci-config/cloudbuild/cloudbuild.yaml | 21 +++++++++++++----- .../cicd-pipeline/jenkins-build/Dockerfile | 2 +- .../cicd-pipeline/jenkins-build/README.md | 4 +--- .../jenkins-build/jenkins-web/Dockerfile | 3 ++- .../cicd-pipeline/jenkins-build/plugins.txt | 22 +++++++++---------- references/cicd-pipeline/pipeline.sh | 22 ++++++++++++------- 7 files changed, 45 insertions(+), 31 deletions(-) diff --git a/references/cicd-pipeline/README.md b/references/cicd-pipeline/README.md index 0569f2fe9..4975aed09 100644 --- a/references/cicd-pipeline/README.md +++ b/references/cicd-pipeline/README.md @@ -68,7 +68,7 @@ GIT_URL='https://github.com/ORG/REPO.git' ``` ```sh -cd devrel/references/cicd-pipeline +cd devrel git init git remote add origin $GIT_URL git checkout -b feature/cicd-pipeline diff --git a/references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml b/references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml index 2057be3d1..049d38629 100644 --- a/references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml +++ b/references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml @@ -16,11 +16,12 @@ steps: # Install node dependencies for linting and testing - name: node id: "Install Dependencies" - entrypoint: npm + entrypoint: "bash" args: - - "install" - - "--silent" - - "--no-fund" + - "-c" + - |- + cd "$_WORK_DIR" + npm install --silent --no-fund # Run static code analysis and linting - name: node id: "Static Code Analysis" @@ -28,6 +29,7 @@ steps: args: - "-c" - |- + cd "$_WORK_DIR" npm run apigeelint | tee report.apigeelint.html && \ if [ ${PIPESTATUS[0]} -ne "0" ]; then exit -1; fi && \ npm run eslint | tee report.eslint.html && \ @@ -38,15 +40,18 @@ steps: entrypoint: "bash" args: - "-c" - - "npm run unit-test" + - |- + cd "$_WORK_DIR" + npm run unit-test # Fetch Apigee credentials # and set branch specific config parameters - name: gcr.io/cloud-builders/gcloud - entrypoint: "bash" id: "Fetch Credentials" + entrypoint: "bash" args: - "-c" - |- + cd "$_WORK_DIR" # Config based on branch name if [ "$BRANCH_NAME" = "main" ] then @@ -86,6 +91,7 @@ steps: args: - "-c" - |- + cd "$_WORK_DIR" if [ "$_API_VERSION" = "apigee" ] then source env.txt && \ @@ -114,6 +120,7 @@ steps: args: - "-c" - |- + cd "$_WORK_DIR" source env.txt && \ npm run integration-test | tee report.e2e.html && \ if [ ${PIPESTATUS[0]} -ne "0" ]; then exit -1; fi @@ -126,6 +133,7 @@ steps: args: - "-c" - |- + cd "$_WORK_DIR" gsutil cp -r coverage* \ gs://${PROJECT_ID}_cloudbuild/reports/$BUILD_ID/coverage && \ gsutil cp ./report.*.html \ @@ -142,3 +150,4 @@ substitutions: _API_VERSION: apigee #apigee|google # Host name for the integration test _INT_TEST_HOST: org-env.apigee.net + _WORK_DIR: "references/cicd-pipeline" diff --git a/references/cicd-pipeline/jenkins-build/Dockerfile b/references/cicd-pipeline/jenkins-build/Dockerfile index 66a96073f..0fdd33a43 100644 --- a/references/cicd-pipeline/jenkins-build/Dockerfile +++ b/references/cicd-pipeline/jenkins-build/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. -FROM jenkins/jenkins:2.315-alpine +FROM jenkins/jenkins:2.346-alpine USER root RUN apk update && apk add --no-cache git maven nodejs npm diff --git a/references/cicd-pipeline/jenkins-build/README.md b/references/cicd-pipeline/jenkins-build/README.md index 96f496702..8197e2637 100644 --- a/references/cicd-pipeline/jenkins-build/README.md +++ b/references/cicd-pipeline/jenkins-build/README.md @@ -31,7 +31,7 @@ docker tag ghcr.io/apigee/devrel-jenkins:latest apigee/devrel-jenkins:latest ```sh docker build -t apigee/devrel-jenkins-base:latest . -docker build -f jenkins-web/Dockerfile -t apigee/devrel-jenkins:latest . +docker build -f ./jenkins-web/Dockerfile -t apigee/devrel-jenkins:latest . ``` #### Option C: Cloud Build on GCP @@ -151,7 +151,6 @@ You can also run a local Docker image as follows: ```sh docker run \ -p 8080:8080 \ - -p 5000:5000 \ -e APIGEE_USER \ -e APIGEE_PASS \ -e APIGEE_ORG \ @@ -172,7 +171,6 @@ the access token via environment variables. ```sh docker run \ -p 8080:8080 \ - -p 5000:5000 \ -e APIGEE_TOKEN="$(gcloud auth print-access-token)" \ -e APIGEE_ORG \ -e APIGEE_TEST_ENV="test1" \ diff --git a/references/cicd-pipeline/jenkins-build/jenkins-web/Dockerfile b/references/cicd-pipeline/jenkins-build/jenkins-web/Dockerfile index 121b7b132..e12901407 100644 --- a/references/cicd-pipeline/jenkins-build/jenkins-web/Dockerfile +++ b/references/cicd-pipeline/jenkins-build/jenkins-web/Dockerfile @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -ARG baseImage=apigee/devrel-jenkins-base:latest +ARG baseImage=apigee/devrel-jenkins-base +ARG baseImageTag=latest FROM google/cloud-sdk:alpine as cloud-sdk diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 85d89b756..7d1e2c633 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -1,11 +1,11 @@ -configuration-as-code:1.55 -cucumber-reports:5.6.1 -git:4.10.1 -htmlpublisher:1.28 -junit:1.53 -matrix-project:1.19 -script-security:1118.vba21ca2e3286 -token-macro:267.vcdaea6462991 -workflow-aggregator:2.6 -workflow-multibranch:696.v52535c46f4c9 -workflow-step-api:622.vb_8e7c15b_c95a_ \ No newline at end of file +configuration-as-code:1429.v09b_044a_c93de +cucumber-reports:5.7.0 +git:4.11.1 +htmlpublisher:1.30 +junit:1.63 +matrix-project:771.v574584b_39e60 +script-security:1158.v7c1b_73a_69a_08 +token-macro:293.v283932a_0a_b_49 +workflow-aggregator:2.7 +workflow-multibranch:712.vc169a_1387405 +workflow-step-api:625.vd896b_f445a_f8 \ No newline at end of file diff --git a/references/cicd-pipeline/pipeline.sh b/references/cicd-pipeline/pipeline.sh index f6b2951ea..0db128901 100755 --- a/references/cicd-pipeline/pipeline.sh +++ b/references/cicd-pipeline/pipeline.sh @@ -15,6 +15,7 @@ # limitations under the License. set -e +SCRIPTPATH=$( (cd "$(dirname "$0")" && pwd )) echo "[INFO] CICD Pipeline for Apigee X/hybrid (Cloud Build)" BRANCH_NAME_X=devrel-cloudbuild @@ -22,8 +23,9 @@ SUBSTITUTIONS_X="_INT_TEST_HOST=$APIGEE_X_HOSTNAME" SUBSTITUTIONS_X="$SUBSTITUTIONS_X,_DEPLOYMENT_ORG=$APIGEE_X_ORG" SUBSTITUTIONS_X="$SUBSTITUTIONS_X,_APIGEE_TEST_ENV=$APIGEE_X_ENV" SUBSTITUTIONS_X="$SUBSTITUTIONS_X,_API_VERSION=google" +SUBSTITUTIONS_X="$SUBSTITUTIONS_X,_WORK_DIR=." SUBSTITUTIONS_X="$SUBSTITUTIONS_X,BRANCH_NAME=$BRANCH_NAME_X" -gcloud builds submit --config=./ci-config/cloudbuild/cloudbuild.yaml \ +gcloud builds submit --config="$SCRIPTPATH/ci-config/cloudbuild/cloudbuild.yaml" \ --substitutions="$SUBSTITUTIONS_X" echo "[INFO] CICD Pipeline for Apigee Edge (Cloud Build)" @@ -31,25 +33,27 @@ echo "[INFO] CICD Pipeline for Apigee Edge (Cloud Build)" BRANCH_NAME_EDGE=devrel-cloudbuild SUBSTITUTIONS_EDGE="_INT_TEST_HOST=$APIGEE_ORG-$APIGEE_ENV.apigee.net" SUBSTITUTIONS_EDGE="$SUBSTITUTIONS_EDGE,_DEPLOYMENT_ORG=$APIGEE_ORG" +SUBSTITUTIONS_X="$SUBSTITUTIONS_X,_WORK_DIR=." SUBSTITUTIONS_EDGE="$SUBSTITUTIONS_EDGE,BRANCH_NAME=$BRANCH_NAME_EDGE" -gcloud builds submit --config=./ci-config/cloudbuild/cloudbuild.yaml \ +gcloud builds submit --config="$SCRIPTPATH/ci-config/cloudbuild/cloudbuild.yaml" \ --substitutions="$SUBSTITUTIONS_EDGE" -echo "[INFO] CICD Pipeline for Apigee Edge (Jenkins)" +echo "[INFO] Build Jenkins File Runner Image" -(cd jenkins-build && docker build -f Dockerfile -t apigee/devrel-jenkins-base:latest .) -(cd jenkins-build && docker build -f jenkinsfile-runner/Dockerfile --build-arg baseImage=apigee/devrel-jenkins-base --build-arg baseImageTag=latest -t apigee/devrel-jenkinsfile:latest .) +docker build -f "$SCRIPTPATH/jenkins-build/Dockerfile" -t apigee/devrel-jenkins-base:latest "$SCRIPTPATH/jenkins-build" +docker build -f "$SCRIPTPATH/jenkins-build/jenkinsfile-runner/Dockerfile" --build-arg baseImage=apigee/devrel-jenkins-base --build-arg baseImageTag=latest -t apigee/devrel-jenkinsfile:latest "$SCRIPTPATH/jenkins-build" # because volume mounts don't work inside docker in docker without reference to the host file system -cat << EOF > ./Dockerfile-jenkins-cicd +cat << EOF > "$SCRIPTPATH/Dockerfile-jenkins-cicd" FROM apigee/devrel-jenkinsfile:latest COPY --chown=jenkins . /workspace RUN cp /workspace/ci-config/jenkins/Jenkinsfile /workspace/Jenkinsfile EOF -docker build -f ./Dockerfile-jenkins-cicd -t apigee/devrel-jenkinsfile-airports:latest . -rm ./Dockerfile-jenkins-cicd +docker build -f "$SCRIPTPATH/Dockerfile-jenkins-cicd" -t apigee/devrel-jenkinsfile-airports:latest "$SCRIPTPATH" +rm "$SCRIPTPATH/Dockerfile-jenkins-cicd" +echo "[INFO] CICD Pipeline for Apigee Edge (Jenkins)" docker run \ -e APIGEE_USER \ -e APIGEE_PASS \ @@ -61,6 +65,7 @@ docker run \ -e GIT_BRANCH=nightly \ -e AUTHOR_EMAIL="cicd@apigee.google.com" \ -e JENKINS_ADMIN_PASS="password" \ + -e WORK_DIR="." \ apigee/devrel-jenkinsfile-airports:latest @@ -80,4 +85,5 @@ docker run \ -e GIT_BRANCH=nightly \ -e AUTHOR_EMAIL="cicd@apigee.google.com" \ -e JENKINS_ADMIN_PASS="password" \ + -e WORK_DIR="." \ apigee/devrel-jenkinsfile-airports:latest \ No newline at end of file From 6ef57a7ecd56a73c6f19e73b85dd8eb47b897bed Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Wed, 4 May 2022 17:24:12 +0100 Subject: [PATCH 082/562] auth schema precedence --- .../cicd-pipeline/ci-config/jenkins/Jenkinsfile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 33a276fe8..839b0f5d2 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -10,7 +10,7 @@ pipeline { string(name: 'APIGEE_PROD_ENV_P', defaultValue: '') string(name: 'TEST_HOST_P', defaultValue: 'api.example.com') string(name: 'WORK_DIR_P', defaultValue: 'references/cicd-pipeline') - choice(name: 'GCP_SA_AUTH_P', choices: [ "vm-scope", "jenkins-scope" ], description: 'GCP SA Scope' ) + choice(name: 'GCP_SA_AUTH_P', choices: [ "vm-scope", "jenkins-scope", "token" ], description: 'GCP SA/Token Scope' ) string(name: 'APIGEE_USER_P', defaultValue: 'not-used') string(name: 'APIGEE_PASS_P', defaultValue: 'not-used') @@ -83,6 +83,7 @@ pipeline { println "Apigee Org: " + env.APIGEE_ORG println "Apigee Env: " + env.APIGEE_ENV println "Proxy Deployment Suffix: " + env.APIGEE_DEPLOYMENT_SUFFIX + println "Apigee Authentication Schema: " + env.GCP_SA_AUTH } } } @@ -179,24 +180,24 @@ pipeline { } steps { dir( "${env.WORK_DIR}" ) { - // Token precedence: env var; jenkins-scope sa; vm-scope sa; + // Token precedence: env var; jenkins-scope sa; vm-scope sa; token; script { if (env.GCP_SA_AUTH == "jenkins-scope") { withCredentials([file(credentialsId: 'apigee', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) { env.SA_TOKEN=sh(script:'gcloud auth print-access-token', returnStdout: true).trim() } - } else { + } else if (env.GCP_SA_AUTH == "token") { + env.SA_TOKEN=env.APIGEE_TOKEN + } else { // vm-scope env.SA_TOKEN=sh(script:'gcloud auth application-default print-access-token', returnStdout: true).trim() } sh """ - APIGEE_SA_TOKEN="\${APIGEE_TOKEN:-\${SA_TOKEN}}" - mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ - -Dtoken="\${APIGEE_SA_TOKEN}" \ + -Dtoken=${env.SA_TOKEN}" \ -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" From 1b0faf4e4d9b5b24df6a17d535f995b0e65ac532 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Wed, 4 May 2022 17:43:28 +0100 Subject: [PATCH 083/562] auth schema precedence --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 839b0f5d2..af930adab 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -197,7 +197,7 @@ pipeline { mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ - -Dtoken=${env.SA_TOKEN}" \ + -Dtoken="${env.SA_TOKEN}" \ -Dorg="${env.APIGEE_ORG}" \ -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" From 3827396c174f0b6e26b05874f1b9a2b289784f5d Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Wed, 4 May 2022 17:58:18 +0100 Subject: [PATCH 084/562] auth schema precedence --- references/cicd-pipeline/pipeline.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/pipeline.sh b/references/cicd-pipeline/pipeline.sh index 0db128901..0c894adfe 100755 --- a/references/cicd-pipeline/pipeline.sh +++ b/references/cicd-pipeline/pipeline.sh @@ -76,6 +76,7 @@ TOKEN=$(gcloud auth print-access-token) docker run \ -e APIGEE_USER="not-used" \ -e APIGEE_PASS="not-used" \ + -e GCP_SA_AUTH="token" \ -e APIGEE_TOKEN="$TOKEN" \ -e APIGEE_ORG="$APIGEE_X_ORG" \ -e APIGEE_TEST_ENV="$APIGEE_X_ENV" \ @@ -86,4 +87,4 @@ docker run \ -e AUTHOR_EMAIL="cicd@apigee.google.com" \ -e JENKINS_ADMIN_PASS="password" \ -e WORK_DIR="." \ - apigee/devrel-jenkinsfile-airports:latest \ No newline at end of file + apigee/devrel-jenkinsfile-airports:latest From 31eac0c935e69ff1ffb33ff099749d7b2315945a Mon Sep 17 00:00:00 2001 From: Florian Geiger <49034668+flogei@users.noreply.github.com> Date: Fri, 6 May 2022 10:59:16 +0200 Subject: [PATCH 085/562] Update README.md --- references/data-api/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/references/data-api/README.md b/references/data-api/README.md index e9fa43f0d..0eab25fab 100644 --- a/references/data-api/README.md +++ b/references/data-api/README.md @@ -40,7 +40,7 @@ export PROXY_NAME="$( tr '/' '-' <<< ${BASE_PATH:1})" rm -rf "./$PROXY_NAME/" mkdir "./$PROXY_NAME/" -cp -r template/ "./$PROXY_NAME/" +cp -r template/. "./$PROXY_NAME/" find ./$PROXY_NAME -name '*.xml' -print0 | while IFS= read -r -d '' file; do @@ -147,4 +147,4 @@ envsubst '$APIGEE_X_HOSTNAME' < ./london-bike.spec.yaml > ./london-bikes-v1/spec ``` And use the templated spec file together with an appropriate picture to create -a product in the Apigee Developer Portal. \ No newline at end of file +a product in the Apigee Developer Portal. From 827a131575abd3aea7a7afaf61b69cd1650d0e5b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 8 May 2022 20:12:50 +0100 Subject: [PATCH 086/562] mask token --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index af930adab..903b35fb0 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -194,6 +194,7 @@ pipeline { } sh """ +wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: token, var: 'SA_TOKEN']]]) { mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ @@ -203,6 +204,7 @@ pipeline { -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" """ } +} } } } From ca73028dbf9ab3061a790e2541943383c9303531 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 8 May 2022 20:16:29 +0100 Subject: [PATCH 087/562] mask token --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 903b35fb0..0ea23863e 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -193,8 +193,8 @@ pipeline { env.SA_TOKEN=sh(script:'gcloud auth application-default print-access-token', returnStdout: true).trim() } - sh """ wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: token, var: 'SA_TOKEN']]]) { + sh """ mvn clean install \ -Pgoogleapi \ -Denv="${env.APIGEE_ENV}" \ From 7f5c8b0bc9b40b86cb06af7e1e9f8f91a4ef4f06 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 8 May 2022 20:24:51 +0100 Subject: [PATCH 088/562] mask token --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 0ea23863e..db5b5c19c 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -193,7 +193,7 @@ pipeline { env.SA_TOKEN=sh(script:'gcloud auth application-default print-access-token', returnStdout: true).trim() } -wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: token, var: 'SA_TOKEN']]]) { +wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: "env.SA_TOKEN", var: 'SA_TOKEN']]]) { sh """ mvn clean install \ -Pgoogleapi \ From fb25650449d649e206464645ffe92bb80e1901fa Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 8 May 2022 20:27:54 +0100 Subject: [PATCH 089/562] mask token --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index db5b5c19c..84da8553d 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -193,7 +193,7 @@ pipeline { env.SA_TOKEN=sh(script:'gcloud auth application-default print-access-token', returnStdout: true).trim() } -wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: "env.SA_TOKEN", var: 'SA_TOKEN']]]) { +wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: env.SA_TOKEN, var: 'SA_TOKEN']]]) { sh """ mvn clean install \ -Pgoogleapi \ From e7eb8687e30c87c2bb58f50ddb8b819936142f88 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 8 May 2022 20:29:42 +0100 Subject: [PATCH 090/562] mask token --- .../ci-config/jenkins/Jenkinsfile | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 84da8553d..991b1e766 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -193,16 +193,16 @@ pipeline { env.SA_TOKEN=sh(script:'gcloud auth application-default print-access-token', returnStdout: true).trim() } -wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: env.SA_TOKEN, var: 'SA_TOKEN']]]) { - sh """ - mvn clean install \ - -Pgoogleapi \ - -Denv="${env.APIGEE_ENV}" \ - -Dtoken="${env.SA_TOKEN}" \ - -Dorg="${env.APIGEE_ORG}" \ - -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ - -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" - """ + wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: env.SA_TOKEN, var: 'SA_TOKEN']]]) { + sh """ + mvn clean install \ + -Pgoogleapi \ + -Denv="${env.APIGEE_ENV}" \ + -Dtoken="${env.SA_TOKEN}" \ + -Dorg="${env.APIGEE_ORG}" \ + -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ + -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" + """ } } } } From 2723cdda3bf5121eff85391bad64ce567d707a99 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Sun, 8 May 2022 20:36:36 +0100 Subject: [PATCH 091/562] mask token --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 991b1e766..10a30a0b3 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -203,8 +203,8 @@ pipeline { -Ddeployment.suffix="${env.APIGEE_DEPLOYMENT_SUFFIX}" \ -Ddeployment.description="Jenkins Build: ${env.BUILD_TAG} Author: ${env.AUTHOR_EMAIL}" """ + } } -} } } } From 4b51cc6c82901421e146193908153a5e7ebc03d0 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Mon, 9 May 2022 20:13:14 +0100 Subject: [PATCH 092/562] mask token --- references/cicd-pipeline/jenkins-build/plugins.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 7d1e2c633..6a03ef76e 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -3,9 +3,10 @@ cucumber-reports:5.7.0 git:4.11.1 htmlpublisher:1.30 junit:1.63 +mask-passwords:3.1 matrix-project:771.v574584b_39e60 script-security:1158.v7c1b_73a_69a_08 token-macro:293.v283932a_0a_b_49 workflow-aggregator:2.7 workflow-multibranch:712.vc169a_1387405 -workflow-step-api:625.vd896b_f445a_f8 \ No newline at end of file +workflow-step-api:625.vd896b_f445a_f8 From d485a89c96633021221c9788af960a8fe8504c26 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 11 May 2022 10:37:36 +0200 Subject: [PATCH 093/562] increase unit test timeout for jenkins cicd pipeline --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .../cicd-pipeline/jenkins-build/jenkinsfile-runner/Dockerfile | 2 +- references/cicd-pipeline/package.json | 2 +- tools/pipeline-runner/cloudbuild.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f0d09ccba..bed699f39 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ What's changed, or what was fixed? **Fixes:** #issue ## Housekeeping -(please check all that apply [X], do not edit the text) +(please check all that apply [x], do not edit the text) - [ ] I have run all the tests locally and they all pass. - [ ] I have followed the relevant style guide for my changes. - [ ] PR requires full pipeline run (Run for changes only by default). diff --git a/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/Dockerfile b/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/Dockerfile index c31bce3ac..8f7459892 100644 --- a/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/Dockerfile +++ b/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/Dockerfile @@ -21,7 +21,7 @@ FROM ${baseImage}:${baseImageTag} USER root WORKDIR /usr/share/jenkins -RUN jar -xvf jenkins.war +RUN jar -xf jenkins.war USER jenkins COPY --from=filerunner --chown=jenkins /app /app diff --git a/references/cicd-pipeline/package.json b/references/cicd-pipeline/package.json index 9e459c28f..3addec4ed 100644 --- a/references/cicd-pipeline/package.json +++ b/references/cicd-pipeline/package.json @@ -5,7 +5,7 @@ "author": "danistrebel", "scripts": { "test": "npm run unit-test && npm run integration-test", - "unit-test": "nyc --reporter=html mocha --recursive \"./test/unit/*.js\"", + "unit-test": "nyc --reporter=html mocha --recursive \"./test/unit/*.js\" --timeout 5000", "integration-test": "cucumber-js ./test/integration", "lint": "npm run eslint && npm run apigeelint", "eslint": "eslint --format html .", diff --git a/tools/pipeline-runner/cloudbuild.yaml b/tools/pipeline-runner/cloudbuild.yaml index 9b1554895..3bf419143 100644 --- a/tools/pipeline-runner/cloudbuild.yaml +++ b/tools/pipeline-runner/cloudbuild.yaml @@ -65,7 +65,7 @@ steps: - |- max_duration=6960 # cloud build timeout minus 4m if [ -n "$_PR_NUMBER" ]; then - FULL_PIPELINE_REQUIRED=$(curl "https://api.github.com/repos/$_REPO_GH_ISSUE/issues/$_PR_NUMBER" | jq '.body | contains("[X] PR requires full pipeline run")' ) + FULL_PIPELINE_REQUIRED=$(curl "https://api.github.com/repos/$_REPO_GH_ISSUE/issues/$_PR_NUMBER" | jq '.body |= ascii_downcase | .body | contains("[x] pr requires full pipeline run")' ) PROJECTS=$(list-repo-changes.sh) if [ "$$FULL_PIPELINE_REQUIRED" = "true" ]; then echo "Running Full Pipeline as required in the PR" From e7388bf3166ef7ef2481be1e61d79592dc14786b Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 13 May 2022 08:51:26 +0200 Subject: [PATCH 094/562] mocha timeout for npm script and for jenkinsfile --- references/cicd-pipeline/ci-config/jenkins/Jenkinsfile | 4 ++-- references/cicd-pipeline/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile index 10a30a0b3..1da99286d 100644 --- a/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile +++ b/references/cicd-pipeline/ci-config/jenkins/Jenkinsfile @@ -35,7 +35,7 @@ pipeline { // TEST_HOST= 'api.example.com' } - + stages { stage('Version Check') { steps { @@ -128,7 +128,7 @@ pipeline { stage('Unit Test') { steps { dir( "${env.WORK_DIR}" ) { - sh "./node_modules/nyc/bin/nyc.js --reporter=html --reporter=text ./node_modules/mocha/bin/_mocha ./test/unit" + sh "./node_modules/nyc/bin/nyc.js --reporter=html --reporter=text ./node_modules/mocha/bin/_mocha --timeout 5000 --recursive ./test/unit" publishHTML(target: [ allowMissing: false, diff --git a/references/cicd-pipeline/package.json b/references/cicd-pipeline/package.json index 3addec4ed..2fb4a7d99 100644 --- a/references/cicd-pipeline/package.json +++ b/references/cicd-pipeline/package.json @@ -5,7 +5,7 @@ "author": "danistrebel", "scripts": { "test": "npm run unit-test && npm run integration-test", - "unit-test": "nyc --reporter=html mocha --recursive \"./test/unit/*.js\" --timeout 5000", + "unit-test": "nyc --reporter=html mocha --recursive --timeout 5000 \"./test/unit/*.js\"", "integration-test": "cucumber-js ./test/integration", "lint": "npm run eslint && npm run apigeelint", "eslint": "eslint --format html .", From cac6134894d8e7965657288ca1e97b984da0d755 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 13 May 2022 08:51:51 +0200 Subject: [PATCH 095/562] proper ingress XLB cleanup --- tools/hybrid-quickstart/destroy-runtime-gke.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/hybrid-quickstart/destroy-runtime-gke.sh b/tools/hybrid-quickstart/destroy-runtime-gke.sh index 0ec2b429e..c3008f07d 100755 --- a/tools/hybrid-quickstart/destroy-runtime-gke.sh +++ b/tools/hybrid-quickstart/destroy-runtime-gke.sh @@ -55,6 +55,23 @@ rm empty-file gcloud dns managed-zones delete apigee-dns-zone -q + +for fwdrule in $(gcloud compute forwarding-rules list --format="value(name)" --filter="name~xlb-apigee-ingress"); do + gcloud compute forwarding-rules delete --global "$fwdrule" -q +done + +for targetproxy in $(gcloud compute target-https-proxies list --format="value(name)" --filter="name~xlb-apigee-ingress"); do + gcloud compute target-https-proxies delete "$targetproxy" -q +done + +for urlmap in $(gcloud compute url-maps list --format="value(name)" --filter="name~xlb-apigee-ingress"); do + gcloud compute url-maps delete "$urlmap" -q +done + +for backendsystem in $(gcloud compute backend-services list --format="value(name)" --filter="name~istio-ingressgateway"); do + gcloud compute backend-services delete --global "$backendsystem" -q +done + for mcrt in $(gcloud compute ssl-certificates list --format="value(name)" --filter="name~^mcrt-"); do gcloud compute ssl-certificates delete "$mcrt" -q done From b1f9adad94ea5523bcd255222a1635db1d2a7395 Mon Sep 17 00:00:00 2001 From: Tyler Ayers Date: Fri, 13 May 2022 12:13:13 +0200 Subject: [PATCH 096/562] added MANAGED_DOMAIN_PREFIX parameter to influence the nip domain (so for example to use api.[ip].nip.io instead of eval-group.[ip].nip.io - better for demos --- tools/apigee-x-trial-provision/apigee-x-trial-provision.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/apigee-x-trial-provision/apigee-x-trial-provision.sh b/tools/apigee-x-trial-provision/apigee-x-trial-provision.sh index de41aac18..9f154d423 100755 --- a/tools/apigee-x-trial-provision/apigee-x-trial-provision.sh +++ b/tools/apigee-x-trial-provision/apigee-x-trial-provision.sh @@ -122,6 +122,7 @@ export PROXY_PREEMPTIBLE=${PROXY_PREEMPTIBLE:-false} export PROXY_MIG_MIN_SIZE=${PROXY_MIG_MIN_SIZE:-1} export CERTIFICATES=${CERTIFICATES:-managed} export ENV_GROUP_NAME='eval-group' +export MANAGED_DOMAIN_PREFIX=${MANAGED_DOMAIN_PREFIX:-$ENV_GROUP_NAME} CERT_DISPLAY=$CERTIFICATES @@ -147,7 +148,7 @@ else fi if [ "$CERTIFICATES" = "managed" ]; then - export RUNTIME_HOST_ALIAS="$ENV_GROUP_NAME.[external-ip].nip.io" + export RUNTIME_HOST_ALIAS="$MANAGED_DOMAIN_PREFIX.[external-ip].nip.io" else export RUNTIME_HOST_ALIAS=${RUNTIME_HOST_ALIAS:-$ORG-eval.apigee.net} fi @@ -169,6 +170,7 @@ else echo " PROXY_PREEMPTIBLE=$PROXY_PREEMPTIBLE" echo " PROXY_MIG_MIN_SIZE=$PROXY_MIG_MIN_SIZE" echo " CERTIFICATES=$CERT_DISPLAY" + echo " MANAGED_DOMAIN_PREFIX=$MANAGED_DOMAIN_PREFIX" echo " RUNTIME_HOST_ALIAS=$RUNTIME_HOST_ALIAS" fi echo "" @@ -357,7 +359,7 @@ echo "Step 7e: Upload credentials:" if [ "$CERTIFICATES" = "managed" ]; then echo "Step 7e.1: Using Google managed certificate:" - RUNTIME_HOST_ALIAS="$ENV_GROUP_NAME".$(echo "$RUNTIME_IP" | tr '.' '-').nip.io + RUNTIME_HOST_ALIAS="$MANAGED_DOMAIN_PREFIX".$(echo "$RUNTIME_IP" | tr '.' '-').nip.io gcloud compute ssl-certificates create apigee-ssl-cert \ --domains="$RUNTIME_HOST_ALIAS" --project "$PROJECT" --quiet elif [ "$CERTIFICATES" = "generated" ]; then From d8714247dcba778c0ab23c550b11247501d7d194 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 13 May 2022 15:14:48 +0200 Subject: [PATCH 097/562] add firewall re-creation for hybrid quickstart --- tools/hybrid-quickstart/steps.sh | 47 +++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 8597d2ee2..024a74c2e 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -37,6 +37,10 @@ set_config_params() { export SUBNET=${SUBNET:-"apigee-$REGION"} echo "- Network $NETWORK/$SUBNET" + export CONTROL_PLANE_CIDR=${CONTROL_PLANE_CIDR:-'172.16.0.16/28'} + echo "- GKE control plane CIDR $CONTROL_PLANE_CIDR" + + printf "\n🔧 Apigee hybrid Configuration:\n" export INGRESS_TYPE=${INGRESS_TYPE:-'external'} # internal|external echo "- Ingress type $INGRESS_TYPE" @@ -315,10 +319,6 @@ configure_network() { gcloud compute routers nats create apigee-nat --router apigee-router --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges fi - if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then - gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" - fi - if [ -z "$(gcloud compute addresses list --format json --filter 'name=apigee-ingress-ip' --format='get(address)')" ]; then if [[ "$INGRESS_TYPE" == "external" && "$CERT_TYPE" == "google-managed" ]]; then gcloud compute addresses create apigee-ingress-ip --global @@ -367,6 +367,8 @@ create_gke_cluster() { echo "🚀 Create GKE cluster" if [ -z "$(gcloud container clusters list --filter "name=$GKE_CLUSTER_NAME" --format='get(name)')" ]; then + + gcloud container clusters create "$GKE_CLUSTER_NAME" \ --region "$REGION" \ --node-locations "$ZONE" \ @@ -374,7 +376,7 @@ create_gke_cluster() { --no-enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ - --master-ipv4-cidr 172.16.0.16/28 \ + --master-ipv4-cidr "$CONTROL_PLANE_CIDR" \ --enable-shielded-nodes \ --shielded-secure-boot \ --shielded-integrity-monitoring \ @@ -399,6 +401,10 @@ create_gke_cluster() { kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole cluster-admin --user "$(gcloud config get-value account)" || true + if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then + gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" + fi + echo "✅ GKE set up" } @@ -732,21 +738,36 @@ logger: EOF } +apigeectl_init() { + if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then + gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" + fi + "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml +} + +apigeectl_apply() { + if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then + gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" + fi + "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml +} + + install_runtime() { pushd "$HYBRID_HOME" || return # because apigeectl uses pwd-relative paths mkdir -p "$HYBRID_HOME"/generated - "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml \ - || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml ) \ - || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml ) + apigeectl_init \ + || ( sleep 120 && apigeectl_init ) \ + || ( sleep 120 && apigeectl_init ) \ + || ( sleep 240 && apigeectl_init ) sleep 2 && echo -n "⏳ Waiting for Apigeectl init " wait_for_ready "Running" "kubectl get po -l app=apigee-controller -n apigee-system -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Controller: Running" echo "waiting for 30s for the webhook certs to propagate" && sleep 30 - - "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml \ - || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml ) \ - || ( sleep 120 && "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml ) - + apigeectl_apply \ + || ( sleep 120 && apigeectl_apply ) \ + || ( sleep 120 && apigeectl_apply ) \ + || ( sleep 240 && apigeectl_apply ) sleep 2 && echo -n "⏳ Waiting for Apigeectl apply " wait_for_ready "Running" "kubectl get po -l app=apigee-runtime -n apigee -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Runtime: Running." From e593efecac79aebccd1f7ae496deebd289988c9c Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 13 May 2022 16:11:16 +0200 Subject: [PATCH 098/562] Start node count for GKE hybrid with 4 nodes --- tools/hybrid-quickstart/steps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 024a74c2e..015a8f8dc 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -385,7 +385,7 @@ create_gke_cluster() { --default-max-pods-per-node "110" \ --enable-ip-alias \ --machine-type "$GKE_CLUSTER_MACHINE_TYPE" \ - --num-nodes "3" \ + --num-nodes "4" \ --enable-autoscaling \ --min-nodes "3" \ --max-nodes "6" \ From a726bb32b3f34e24d92c24cbd33ececf1d4ef1ce Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 13 May 2022 18:11:34 +0200 Subject: [PATCH 099/562] move hybrid to public GKE cluster for nightly --- tools/hybrid-quickstart/cloudbuild.yaml | 2 ++ tools/hybrid-quickstart/pipeline.sh | 2 +- tools/hybrid-quickstart/steps.sh | 36 ++++++++++++++----------- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/tools/hybrid-quickstart/cloudbuild.yaml b/tools/hybrid-quickstart/cloudbuild.yaml index 79dfeb11d..cf2b9b544 100644 --- a/tools/hybrid-quickstart/cloudbuild.yaml +++ b/tools/hybrid-quickstart/cloudbuild.yaml @@ -27,6 +27,7 @@ steps: - 'ENV_NAME=$_QUICKSTART_ENV_NAME' - 'ENV_GROUP_NAME=$_QUICKSTART_ENV_GROUP_NAME' - 'CERT_TYPE=$_CERT_TYPE' + - 'PRIVATE_CLUSTER=$_PRIVATE_CLUSTER' - 'QUIET_INSTALL=true' @@ -79,4 +80,5 @@ substitutions: _QUICKSTART_ENV_NAME: test1 _QUICKSTART_ENV_GROUP_NAME: test _DESTROY_AFTER_VALIDATION: "false" + _PRIVATE_CLUSTER: "true" _CERT_TYPE: "" # default: 'google-managed' diff --git a/tools/hybrid-quickstart/pipeline.sh b/tools/hybrid-quickstart/pipeline.sh index 840d30b09..9270ccc7e 100755 --- a/tools/hybrid-quickstart/pipeline.sh +++ b/tools/hybrid-quickstart/pipeline.sh @@ -15,5 +15,5 @@ # limitations under the License. gcloud builds submit --config ./cloudbuild.yaml --suppress-logs \ - --substitutions="_DESTROY_AFTER_VALIDATION=true" \ + --substitutions="_DESTROY_AFTER_VALIDATION=true,_PRIVATE_CLUSTER=false" \ --project "$HYBRID_GCP_PROJECT" diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 015a8f8dc..81ca823b9 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -37,8 +37,11 @@ set_config_params() { export SUBNET=${SUBNET:-"apigee-$REGION"} echo "- Network $NETWORK/$SUBNET" + export PRIVATE_CLUSTER=${PRIVATE_CLUSTER:-'true'} + echo "- Private Cluster $PRIVATE_CLUSTER" + export CONTROL_PLANE_CIDR=${CONTROL_PLANE_CIDR:-'172.16.0.16/28'} - echo "- GKE control plane CIDR $CONTROL_PLANE_CIDR" + echo "- GKE control plane CIDR (private cluster only) $CONTROL_PLANE_CIDR" printf "\n🔧 Apigee hybrid Configuration:\n" @@ -368,15 +371,22 @@ create_gke_cluster() { if [ -z "$(gcloud container clusters list --filter "name=$GKE_CLUSTER_NAME" --format='get(name)')" ]; then + if [ "$PRIVATE_CLUSTER" = "true" ];then + if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then + gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" + fi - gcloud container clusters create "$GKE_CLUSTER_NAME" \ + CLUSTER_FLAGS="--no-enable-master-authorized-networks --enable-private-nodes --master-ipv4-cidr $CONTROL_PLANE_CIDR --tags=hybrid-quickstart,private-cluster" + else + CLUSTER_FLAGS="--tags=hybrid-quickstart" + fi + + + gcloud container clusters create "$GKE_CLUSTER_NAME" "$CLUSTER_FLAGS" \ --region "$REGION" \ --node-locations "$ZONE" \ --release-channel stable \ - --no-enable-master-authorized-networks \ --enable-ip-alias \ - --enable-private-nodes \ - --master-ipv4-cidr "$CONTROL_PLANE_CIDR" \ --enable-shielded-nodes \ --shielded-secure-boot \ --shielded-integrity-monitoring \ @@ -401,9 +411,6 @@ create_gke_cluster() { kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole cluster-admin --user "$(gcloud config get-value account)" || true - if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then - gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" - fi echo "✅ GKE set up" } @@ -739,16 +746,10 @@ EOF } apigeectl_init() { - if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then - gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" - fi "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml } apigeectl_apply() { - if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then - gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" - fi "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml } @@ -756,18 +757,21 @@ apigeectl_apply() { install_runtime() { pushd "$HYBRID_HOME" || return # because apigeectl uses pwd-relative paths mkdir -p "$HYBRID_HOME"/generated + apigeectl_init \ - || ( sleep 120 && apigeectl_init ) \ + || ( sleep 60 && apigeectl_init ) \ || ( sleep 120 && apigeectl_init ) \ || ( sleep 240 && apigeectl_init ) + sleep 2 && echo -n "⏳ Waiting for Apigeectl init " wait_for_ready "Running" "kubectl get po -l app=apigee-controller -n apigee-system -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Controller: Running" echo "waiting for 30s for the webhook certs to propagate" && sleep 30 apigeectl_apply \ - || ( sleep 120 && apigeectl_apply ) \ + || ( sleep 60 && apigeectl_apply ) \ || ( sleep 120 && apigeectl_apply ) \ || ( sleep 240 && apigeectl_apply ) + sleep 2 && echo -n "⏳ Waiting for Apigeectl apply " wait_for_ready "Running" "kubectl get po -l app=apigee-runtime -n apigee -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Runtime: Running." From 978c77438e27509f6d2504ef5ebc256e296c93ce Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 11:47:54 +0100 Subject: [PATCH 100/562] Add gensfds project --- tools/apigee-gensfds/.gitignore | 1 + tools/apigee-gensfds/README.md | 40 ++++++++ tools/apigee-gensfds/package-lock.json | 22 +++++ tools/apigee-gensfds/package.json | 10 ++ tools/apigee-gensfds/pipeline.sh | 24 +++++ tools/apigee-gensfds/src/gensfds.sh | 97 +++++++++++++++++++ .../policies/FC-CheckTokenNotReused.xml | 12 +++ .../policies/FC-ValidateAudience.xml | 9 ++ tools/apigee-gensfds/test/test.bats | 42 ++++++++ 9 files changed, 257 insertions(+) create mode 100644 tools/apigee-gensfds/.gitignore create mode 100644 tools/apigee-gensfds/README.md create mode 100644 tools/apigee-gensfds/package-lock.json create mode 100644 tools/apigee-gensfds/package.json create mode 100755 tools/apigee-gensfds/pipeline.sh create mode 100755 tools/apigee-gensfds/src/gensfds.sh create mode 100644 tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml create mode 100644 tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml create mode 100644 tools/apigee-gensfds/test/test.bats diff --git a/tools/apigee-gensfds/.gitignore b/tools/apigee-gensfds/.gitignore new file mode 100644 index 000000000..40b878db5 --- /dev/null +++ b/tools/apigee-gensfds/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/tools/apigee-gensfds/README.md b/tools/apigee-gensfds/README.md new file mode 100644 index 000000000..ab1daeeb0 --- /dev/null +++ b/tools/apigee-gensfds/README.md @@ -0,0 +1,40 @@ +# gensfds Generate Shared Flow Dependencies + +A tool which generates the topologically sorted list of Apigee Shared Flows. + +Apigee X/Hybrid causes an error condition if a FlowCallout policy refers to +a Shared Flow that is not deployed yet. + +The tool also generates dot file that visualises the dependencies. + +## Dependencies + +- bash and POSIX Linux + +## Prerequisites and Installation + +The simplest way is to directly download a script into a directory of your choice +and change its executable permissions. + +``` +curl -LO https://raw.githubusercontent.com/apigee/devrel/main/tools/apigee-gensfds/gensfds.sh&&chmod +x gensfds.sh +``` + +## Usage + +```bash +gensfds tsort|dot +``` + +### Parameters + +Two positional parameters: + +- directory that contains a collection of shared flows +- type of output: tsort or dot + +### Example + +```bash +gensfds . dot +``` \ No newline at end of file diff --git a/tools/apigee-gensfds/package-lock.json b/tools/apigee-gensfds/package-lock.json new file mode 100644 index 000000000..3352bd7f5 --- /dev/null +++ b/tools/apigee-gensfds/package-lock.json @@ -0,0 +1,22 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "bats": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/bats/-/bats-1.7.0.tgz", + "integrity": "sha512-pt5zjJQUB4+JI8Si+z/IAWc8yhMyhdZs6IXMCKgzF768dUIyW5xyBstWtDI5uGSa80v7UQOhh+w0GA4p4+01Bg==", + "dev": true + }, + "bats-assert": { + "version": "git+https://github.com/ztombol/bats-assert.git#9f88b4207da750093baabc4e3f41bf68f0dd3630", + "from": "git+https://github.com/ztombol/bats-assert.git", + "dev": true + }, + "bats-support": { + "version": "git+https://github.com/ztombol/bats-support.git#004e707638eedd62e0481e8cdc9223ad471f12ee", + "from": "git+https://github.com/ztombol/bats-support.git", + "dev": true + } + } +} diff --git a/tools/apigee-gensfds/package.json b/tools/apigee-gensfds/package.json new file mode 100644 index 000000000..12c843214 --- /dev/null +++ b/tools/apigee-gensfds/package.json @@ -0,0 +1,10 @@ +{ + "devDependencies": { + "bats": "^1.7.0", + "bats-assert": "git+https://github.com/ztombol/bats-assert.git", + "bats-support": "git+https://github.com/ztombol/bats-support.git" + }, + "scripts": { + "test": "bats test" + } +} diff --git a/tools/apigee-gensfds/pipeline.sh b/tools/apigee-gensfds/pipeline.sh new file mode 100755 index 000000000..7707b4e93 --- /dev/null +++ b/tools/apigee-gensfds/pipeline.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +set -e + +npm install --no-fund + +PATH=$(npm bin):$PATH npm run test + diff --git a/tools/apigee-gensfds/src/gensfds.sh b/tools/apigee-gensfds/src/gensfds.sh new file mode 100755 index 000000000..5353ea18a --- /dev/null +++ b/tools/apigee-gensfds/src/gensfds.sh @@ -0,0 +1,97 @@ +#!/usr/bin/env bash + +# directory with shared flows +sfdir="$1" +target=$2 + +if [ -z "$sfdir" ]; then + echo "ERROR: Missing directory with shared flows" + exit 1 +fi +if [ ! -d "$sfdir" ]; then + echo "ERROR: Argument $sfdir is not a directory" + exit 1 +fi + +# either dot or tsort +if [ -z "$target" ]; then + echo "ERROR: Missing argument target type: dot or tsort" + exit 1 +fi +# TODO: [ ] check for valid value + + +cd "$sfdir" + +if [ $target = "dot" ]; then + + echo "digraph G {" + echo " rankdir=LR" + echo " node [shape=box,fixedsize=true,width=3]" +fi + +if [ $target = "tsort" ]; then + + dag="" + + declare -a orphans=() + declare -A visited +fi + +for sf in */; do + + sflow="${sf::-1}" + + # check for structural integrity + if [ ! -e ${sf}sharedflowbundle/policies ];then + echo "ERROR: $sf directory is not a shared flow file structure. Missing: ${sf}sharedflowbundle/policies" + exit 1 + fi + + pushd ${sf}sharedflowbundle/policies > /dev/null + +if [ $target = "dot" ]; then + + list=$(grep -Ril "" $sflow + + grep '<]" '{print" \"" $3 "\";"}' + done + fi +fi + +if [ $target = "tsort" ]; then + list=$(grep -Ril "<]" '{print $3 "" }')" + visited[$to]=true + dag="$dag$sflow $to"$'\n' + done + fi + + +fi + popd > /dev/null + +done + +if [ $target = "dot" ]; then + echo "}" +fi + +if [ $target = "tsort" ]; then + echo "$(echo -n $dag|tsort|tac)" + + for sf in "${orphans[@]}"; do + if [ ! "${visited[$sf]}" ]; then + echo "$sf" + fi + done +fi diff --git a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml new file mode 100644 index 000000000..66dabb7ff --- /dev/null +++ b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml @@ -0,0 +1,12 @@ + + + FC-CheckTokenNotReused + + + check-token-not-reused + + + Bearer + + + \ No newline at end of file diff --git a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml new file mode 100644 index 000000000..ff1fde85e --- /dev/null +++ b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml @@ -0,0 +1,9 @@ + + + FC-ValidateAudience + validate-audience-in-jwt + + + 401 + + \ No newline at end of file diff --git a/tools/apigee-gensfds/test/test.bats b/tools/apigee-gensfds/test/test.bats new file mode 100644 index 000000000..d67716c95 --- /dev/null +++ b/tools/apigee-gensfds/test/test.bats @@ -0,0 +1,42 @@ +setup() { + + node_module_path() { + bats_location=$(which bats); + echo "${bats_location%/*/*/*/*}"; + } + + load "$(node_module_path)/bats-assert/load.bash"; + load "$(node_module_path)/bats-support/load.bash"; + + DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" + PATH="$DIR/../src:$PATH" +} + +@test "Directory with no shared flows" { + run gensfds.sh $DIR/no-shared-flows tsort + + assert_output 'ERROR: */ directory is not a shared flow file structure. Missing: */sharedflowbundle/policies' +} + +@test "Generate dot output" { + run gensfds.sh $DIR/shared-flows dot + + assert_output 'digraph G { + rankdir=LR + node [shape=box,fixedsize=true,width=3] + "add-response-fapi-interaction-id"; + "authenticate-with-private-key-jwt" -> "validate-audience-in-jwt"; + "authenticate-with-private-key-jwt" -> "check-token-not-reused"; + "check-token-not-reused"; + "validate-audience-in-jwt"; +}' +} + +@test "Generate tsort output" { + run gensfds.sh $DIR/shared-flows tsort + + assert_output 'validate-audience-in-jwt +check-token-not-reused +authenticate-with-private-key-jwt +add-response-fapi-interaction-id' +} From 4e4fc4216001cb3817e3e46b1cbfaddfbd940e0b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 11:50:59 +0100 Subject: [PATCH 101/562] Fix curl/url for gensdfs download command --- tools/apigee-gensfds/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apigee-gensfds/README.md b/tools/apigee-gensfds/README.md index ab1daeeb0..ea05ba8ad 100644 --- a/tools/apigee-gensfds/README.md +++ b/tools/apigee-gensfds/README.md @@ -17,7 +17,7 @@ The simplest way is to directly download a script into a directory of your choic and change its executable permissions. ``` -curl -LO https://raw.githubusercontent.com/apigee/devrel/main/tools/apigee-gensfds/gensfds.sh&&chmod +x gensfds.sh +curl -LO https://raw.githubusercontent.com/apigee/devrel/main/tools/apigee-gensfds/src/gensfds.sh &&chmod +x gensfds.sh ``` ## Usage From 0882045c7d399afee8fecaeec2bd2c8b91ba4d5b Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 12:00:35 +0100 Subject: [PATCH 102/562] Add copyright clauses --- tools/apigee-gensfds/pipeline.sh | 2 +- tools/apigee-gensfds/src/gensfds.sh | 14 ++++++++++++++ .../policies/FC-CheckTokenNotReused.xml | 15 +++++++++++++++ .../policies/FC-ValidateAudience.xml | 15 +++++++++++++++ tools/apigee-gensfds/test/test.bats | 14 ++++++++++++++ 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/tools/apigee-gensfds/pipeline.sh b/tools/apigee-gensfds/pipeline.sh index 7707b4e93..473a43f04 100755 --- a/tools/apigee-gensfds/pipeline.sh +++ b/tools/apigee-gensfds/pipeline.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-gensfds/src/gensfds.sh b/tools/apigee-gensfds/src/gensfds.sh index 5353ea18a..825f87d52 100755 --- a/tools/apigee-gensfds/src/gensfds.sh +++ b/tools/apigee-gensfds/src/gensfds.sh @@ -1,5 +1,19 @@ #!/usr/bin/env bash +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # directory with shared flows sfdir="$1" target=$2 diff --git a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml index 66dabb7ff..b25398936 100644 --- a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml +++ b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml @@ -1,4 +1,19 @@ + FC-CheckTokenNotReused diff --git a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml index ff1fde85e..4b26ac98f 100644 --- a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml +++ b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml @@ -1,4 +1,19 @@ + FC-ValidateAudience validate-audience-in-jwt diff --git a/tools/apigee-gensfds/test/test.bats b/tools/apigee-gensfds/test/test.bats index d67716c95..77e232815 100644 --- a/tools/apigee-gensfds/test/test.bats +++ b/tools/apigee-gensfds/test/test.bats @@ -1,3 +1,17 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + setup() { node_module_path() { From 1a8daf7544e14122eabd99eaf753f986d40c5abe Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 12:10:30 +0100 Subject: [PATCH 103/562] Add root README entry for the gensfds tool --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e1beb4e37..7be090f75 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,8 @@ Apigee products. - [OpenAPI to Configurable Proxy](tools/oas-configurable-proxy) - A tool to generate configurable proxy archives from an OpenAPI Specification +- [Generate Shared Flows Dependencies](tools/apigee-gensfds) - + A tool to generate topologically sorted Shared Flow dependencies. ## Labs From 59282a117541b662dd79ce22844ef1ac577530f8 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 12:13:37 +0100 Subject: [PATCH 104/562] Add entry in the CODEOWNERS for the gensfds tool --- CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/CODEOWNERS b/CODEOWNERS index 289bcf6c3..c93f924ca 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -33,3 +33,4 @@ /tools/oas-configurable-proxy @danistrebel /tools/pipeline-linter @seymen @danistrebel /tools/pipeline-runner @seymen @danistrebel +/tools/apigee-gensfds @yuriylesyuk @danistrebel From 3c61bcb56ebfe5d7eca725cdcb86f0fb49798432 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 12:44:10 +0100 Subject: [PATCH 105/562] Fix script lint errors --- tools/apigee-gensfds/src/gensfds.sh | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tools/apigee-gensfds/src/gensfds.sh b/tools/apigee-gensfds/src/gensfds.sh index 825f87d52..72a35d214 100755 --- a/tools/apigee-gensfds/src/gensfds.sh +++ b/tools/apigee-gensfds/src/gensfds.sh @@ -35,16 +35,16 @@ fi # TODO: [ ] check for valid value -cd "$sfdir" +cd "$sfdir" || exit -if [ $target = "dot" ]; then +if [ "$target" = "dot" ]; then echo "digraph G {" echo " rankdir=LR" echo " node [shape=box,fixedsize=true,width=3]" fi -if [ $target = "tsort" ]; then +if [ "$target" = "tsort" ]; then dag="" @@ -57,34 +57,34 @@ for sf in */; do sflow="${sf::-1}" # check for structural integrity - if [ ! -e ${sf}sharedflowbundle/policies ];then + if [ ! -e "${sf}sharedflowbundle/policies" ];then echo "ERROR: $sf directory is not a shared flow file structure. Missing: ${sf}sharedflowbundle/policies" exit 1 fi - pushd ${sf}sharedflowbundle/policies > /dev/null + pushd "${sf}sharedflowbundle/policies" > /dev/null || exit -if [ $target = "dot" ]; then +if [ "$target" = "dot" ]; then list=$(grep -Ril "" $sflow + printf " \"%s\" ->" "$sflow" - grep '<]" '{print" \"" $3 "\";"}' + grep '<]" '{print" \"" $3 "\";"}' done fi fi -if [ $target = "tsort" ]; then +if [ "$target" = "tsort" ]; then list=$(grep -Ril "<]" '{print $3 "" }')" + to="$(grep '<]" '{print $3 "" }')" visited[$to]=true dag="$dag$sflow $to"$'\n' done @@ -92,16 +92,16 @@ if [ $target = "tsort" ]; then fi - popd > /dev/null + popd > /dev/null || exit done -if [ $target = "dot" ]; then +if [ "$target" = "dot" ]; then echo "}" fi -if [ $target = "tsort" ]; then - echo "$(echo -n $dag|tsort|tac)" +if [ "$target" = "tsort" ]; then + echo -n "$dag"|tsort|tac for sf in "${orphans[@]}"; do if [ ! "${visited[$sf]}" ]; then From 11efb6eb8aa6a52290a4f8ba676c280207e2c001 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 15:59:47 +0100 Subject: [PATCH 106/562] Bumpt script security plugin to fix CVE --- references/cicd-pipeline/jenkins-build/plugins.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 6a03ef76e..421dfa3ba 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -5,7 +5,7 @@ htmlpublisher:1.30 junit:1.63 mask-passwords:3.1 matrix-project:771.v574584b_39e60 -script-security:1158.v7c1b_73a_69a_08 +script-security:1172.v35f6a_0b_8207e token-macro:293.v283932a_0a_b_49 workflow-aggregator:2.7 workflow-multibranch:712.vc169a_1387405 From 3c8459ce21bdb109993b3828a20a3a64829c32ad Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 16:02:32 +0100 Subject: [PATCH 107/562] Add tsort to alpine image --- tools/pipeline-runner/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/pipeline-runner/Dockerfile b/tools/pipeline-runner/Dockerfile index 19f1f0b8e..f8d0d1716 100644 --- a/tools/pipeline-runner/Dockerfile +++ b/tools/pipeline-runner/Dockerfile @@ -24,6 +24,7 @@ RUN apk add --no-cache \ openjdk11-jre-headless \ openssl \ util-linux \ + coreutils \ gettext \ # add chromium and dependencies for UI testing chromium \ From 2814ae317a4c749c24709a8319f27177aacd5b0f Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 16:18:42 +0100 Subject: [PATCH 108/562] Refactor gensfds project name --- CODEOWNERS | 2 +- README.md | 2 +- tools/apigee-gensfds/.gitignore | 1 - tools/apigee-gensfds/README.md | 40 ------- tools/apigee-gensfds/package-lock.json | 22 ---- tools/apigee-gensfds/package.json | 10 -- tools/apigee-gensfds/pipeline.sh | 24 ---- tools/apigee-gensfds/src/gensfds.sh | 111 ------------------ .../policies/FC-CheckTokenNotReused.xml | 27 ----- .../policies/FC-ValidateAudience.xml | 24 ---- tools/apigee-gensfds/test/test.bats | 56 --------- 11 files changed, 2 insertions(+), 317 deletions(-) delete mode 100644 tools/apigee-gensfds/.gitignore delete mode 100644 tools/apigee-gensfds/README.md delete mode 100644 tools/apigee-gensfds/package-lock.json delete mode 100644 tools/apigee-gensfds/package.json delete mode 100755 tools/apigee-gensfds/pipeline.sh delete mode 100755 tools/apigee-gensfds/src/gensfds.sh delete mode 100644 tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml delete mode 100644 tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml delete mode 100644 tools/apigee-gensfds/test/test.bats diff --git a/CODEOWNERS b/CODEOWNERS index c93f924ca..634b5948a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -33,4 +33,4 @@ /tools/oas-configurable-proxy @danistrebel /tools/pipeline-linter @seymen @danistrebel /tools/pipeline-runner @seymen @danistrebel -/tools/apigee-gensfds @yuriylesyuk @danistrebel +/tools/sf-dependency-list @yuriylesyuk @danistrebel diff --git a/README.md b/README.md index 7be090f75..382172a82 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Apigee products. - [OpenAPI to Configurable Proxy](tools/oas-configurable-proxy) - A tool to generate configurable proxy archives from an OpenAPI Specification -- [Generate Shared Flows Dependencies](tools/apigee-gensfds) - +- [Generate Shared Flows Dependency List](tools/sf-dependency-list) - A tool to generate topologically sorted Shared Flow dependencies. ## Labs diff --git a/tools/apigee-gensfds/.gitignore b/tools/apigee-gensfds/.gitignore deleted file mode 100644 index 40b878db5..000000000 --- a/tools/apigee-gensfds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file diff --git a/tools/apigee-gensfds/README.md b/tools/apigee-gensfds/README.md deleted file mode 100644 index ea05ba8ad..000000000 --- a/tools/apigee-gensfds/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# gensfds Generate Shared Flow Dependencies - -A tool which generates the topologically sorted list of Apigee Shared Flows. - -Apigee X/Hybrid causes an error condition if a FlowCallout policy refers to -a Shared Flow that is not deployed yet. - -The tool also generates dot file that visualises the dependencies. - -## Dependencies - -- bash and POSIX Linux - -## Prerequisites and Installation - -The simplest way is to directly download a script into a directory of your choice -and change its executable permissions. - -``` -curl -LO https://raw.githubusercontent.com/apigee/devrel/main/tools/apigee-gensfds/src/gensfds.sh &&chmod +x gensfds.sh -``` - -## Usage - -```bash -gensfds tsort|dot -``` - -### Parameters - -Two positional parameters: - -- directory that contains a collection of shared flows -- type of output: tsort or dot - -### Example - -```bash -gensfds . dot -``` \ No newline at end of file diff --git a/tools/apigee-gensfds/package-lock.json b/tools/apigee-gensfds/package-lock.json deleted file mode 100644 index 3352bd7f5..000000000 --- a/tools/apigee-gensfds/package-lock.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "bats": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/bats/-/bats-1.7.0.tgz", - "integrity": "sha512-pt5zjJQUB4+JI8Si+z/IAWc8yhMyhdZs6IXMCKgzF768dUIyW5xyBstWtDI5uGSa80v7UQOhh+w0GA4p4+01Bg==", - "dev": true - }, - "bats-assert": { - "version": "git+https://github.com/ztombol/bats-assert.git#9f88b4207da750093baabc4e3f41bf68f0dd3630", - "from": "git+https://github.com/ztombol/bats-assert.git", - "dev": true - }, - "bats-support": { - "version": "git+https://github.com/ztombol/bats-support.git#004e707638eedd62e0481e8cdc9223ad471f12ee", - "from": "git+https://github.com/ztombol/bats-support.git", - "dev": true - } - } -} diff --git a/tools/apigee-gensfds/package.json b/tools/apigee-gensfds/package.json deleted file mode 100644 index 12c843214..000000000 --- a/tools/apigee-gensfds/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "devDependencies": { - "bats": "^1.7.0", - "bats-assert": "git+https://github.com/ztombol/bats-assert.git", - "bats-support": "git+https://github.com/ztombol/bats-support.git" - }, - "scripts": { - "test": "bats test" - } -} diff --git a/tools/apigee-gensfds/pipeline.sh b/tools/apigee-gensfds/pipeline.sh deleted file mode 100755 index 473a43f04..000000000 --- a/tools/apigee-gensfds/pipeline.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -e - -set -e - -npm install --no-fund - -PATH=$(npm bin):$PATH npm run test - diff --git a/tools/apigee-gensfds/src/gensfds.sh b/tools/apigee-gensfds/src/gensfds.sh deleted file mode 100755 index 72a35d214..000000000 --- a/tools/apigee-gensfds/src/gensfds.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env bash - -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# directory with shared flows -sfdir="$1" -target=$2 - -if [ -z "$sfdir" ]; then - echo "ERROR: Missing directory with shared flows" - exit 1 -fi -if [ ! -d "$sfdir" ]; then - echo "ERROR: Argument $sfdir is not a directory" - exit 1 -fi - -# either dot or tsort -if [ -z "$target" ]; then - echo "ERROR: Missing argument target type: dot or tsort" - exit 1 -fi -# TODO: [ ] check for valid value - - -cd "$sfdir" || exit - -if [ "$target" = "dot" ]; then - - echo "digraph G {" - echo " rankdir=LR" - echo " node [shape=box,fixedsize=true,width=3]" -fi - -if [ "$target" = "tsort" ]; then - - dag="" - - declare -a orphans=() - declare -A visited -fi - -for sf in */; do - - sflow="${sf::-1}" - - # check for structural integrity - if [ ! -e "${sf}sharedflowbundle/policies" ];then - echo "ERROR: $sf directory is not a shared flow file structure. Missing: ${sf}sharedflowbundle/policies" - exit 1 - fi - - pushd "${sf}sharedflowbundle/policies" > /dev/null || exit - -if [ "$target" = "dot" ]; then - - list=$(grep -Ril "" "$sflow" - - grep '<]" '{print" \"" $3 "\";"}' - done - fi -fi - -if [ "$target" = "tsort" ]; then - list=$(grep -Ril "<]" '{print $3 "" }')" - visited[$to]=true - dag="$dag$sflow $to"$'\n' - done - fi - - -fi - popd > /dev/null || exit - -done - -if [ "$target" = "dot" ]; then - echo "}" -fi - -if [ "$target" = "tsort" ]; then - echo -n "$dag"|tsort|tac - - for sf in "${orphans[@]}"; do - if [ ! "${visited[$sf]}" ]; then - echo "$sf" - fi - done -fi diff --git a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml deleted file mode 100644 index b25398936..000000000 --- a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - FC-CheckTokenNotReused - - - check-token-not-reused - - - Bearer - - - \ No newline at end of file diff --git a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml b/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml deleted file mode 100644 index 4b26ac98f..000000000 --- a/tools/apigee-gensfds/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - FC-ValidateAudience - validate-audience-in-jwt - - - 401 - - \ No newline at end of file diff --git a/tools/apigee-gensfds/test/test.bats b/tools/apigee-gensfds/test/test.bats deleted file mode 100644 index 77e232815..000000000 --- a/tools/apigee-gensfds/test/test.bats +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -setup() { - - node_module_path() { - bats_location=$(which bats); - echo "${bats_location%/*/*/*/*}"; - } - - load "$(node_module_path)/bats-assert/load.bash"; - load "$(node_module_path)/bats-support/load.bash"; - - DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" - PATH="$DIR/../src:$PATH" -} - -@test "Directory with no shared flows" { - run gensfds.sh $DIR/no-shared-flows tsort - - assert_output 'ERROR: */ directory is not a shared flow file structure. Missing: */sharedflowbundle/policies' -} - -@test "Generate dot output" { - run gensfds.sh $DIR/shared-flows dot - - assert_output 'digraph G { - rankdir=LR - node [shape=box,fixedsize=true,width=3] - "add-response-fapi-interaction-id"; - "authenticate-with-private-key-jwt" -> "validate-audience-in-jwt"; - "authenticate-with-private-key-jwt" -> "check-token-not-reused"; - "check-token-not-reused"; - "validate-audience-in-jwt"; -}' -} - -@test "Generate tsort output" { - run gensfds.sh $DIR/shared-flows tsort - - assert_output 'validate-audience-in-jwt -check-token-not-reused -authenticate-with-private-key-jwt -add-response-fapi-interaction-id' -} From 2733dab382f4e13bdab4287dff3957f9fd3ed0e5 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 18:12:46 +0100 Subject: [PATCH 109/562] Refactor gensfds project name --- tools/sf-dependency-list/.gitignore | 1 + tools/sf-dependency-list/README.md | 40 +++++++ tools/sf-dependency-list/package-lock.json | 22 ++++ tools/sf-dependency-list/package.json | 10 ++ tools/sf-dependency-list/pipeline.sh | 24 ++++ tools/sf-dependency-list/src/gensfds.sh | 111 ++++++++++++++++++ .../policies/FC-CheckTokenNotReused.xml | 27 +++++ .../policies/FC-ValidateAudience.xml | 24 ++++ tools/sf-dependency-list/test/test.bats | 56 +++++++++ 9 files changed, 315 insertions(+) create mode 100644 tools/sf-dependency-list/.gitignore create mode 100644 tools/sf-dependency-list/README.md create mode 100644 tools/sf-dependency-list/package-lock.json create mode 100644 tools/sf-dependency-list/package.json create mode 100755 tools/sf-dependency-list/pipeline.sh create mode 100755 tools/sf-dependency-list/src/gensfds.sh create mode 100644 tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml create mode 100644 tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml create mode 100644 tools/sf-dependency-list/test/test.bats diff --git a/tools/sf-dependency-list/.gitignore b/tools/sf-dependency-list/.gitignore new file mode 100644 index 000000000..40b878db5 --- /dev/null +++ b/tools/sf-dependency-list/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/tools/sf-dependency-list/README.md b/tools/sf-dependency-list/README.md new file mode 100644 index 000000000..56ec0ffd9 --- /dev/null +++ b/tools/sf-dependency-list/README.md @@ -0,0 +1,40 @@ +# gensfds Generate Shared Flow Dependencies + +A tool which generates the topologically sorted list of Apigee Shared Flows. + +Apigee X/Hybrid causes an error condition if a FlowCallout policy refers to +a Shared Flow that is not deployed yet. + +The tool also generates dot file that visualises the dependencies. + +## Dependencies + +- bash and POSIX Linux + +## Prerequisites and Installation + +The simplest way is to directly download a script into a directory of your choice +and change its executable permissions. + +``` +curl -LO https://raw.githubusercontent.com/apigee/devrel/main/tools/sf-dependency-list/src/gensfds.sh &&chmod +x gensfds.sh +``` + +## Usage + +```bash +gensfds tsort|dot +``` + +### Parameters + +Two positional parameters: + +- directory that contains a collection of shared flows +- type of output: tsort or dot + +### Example + +```bash +gensfds . dot +``` \ No newline at end of file diff --git a/tools/sf-dependency-list/package-lock.json b/tools/sf-dependency-list/package-lock.json new file mode 100644 index 000000000..3352bd7f5 --- /dev/null +++ b/tools/sf-dependency-list/package-lock.json @@ -0,0 +1,22 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "bats": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/bats/-/bats-1.7.0.tgz", + "integrity": "sha512-pt5zjJQUB4+JI8Si+z/IAWc8yhMyhdZs6IXMCKgzF768dUIyW5xyBstWtDI5uGSa80v7UQOhh+w0GA4p4+01Bg==", + "dev": true + }, + "bats-assert": { + "version": "git+https://github.com/ztombol/bats-assert.git#9f88b4207da750093baabc4e3f41bf68f0dd3630", + "from": "git+https://github.com/ztombol/bats-assert.git", + "dev": true + }, + "bats-support": { + "version": "git+https://github.com/ztombol/bats-support.git#004e707638eedd62e0481e8cdc9223ad471f12ee", + "from": "git+https://github.com/ztombol/bats-support.git", + "dev": true + } + } +} diff --git a/tools/sf-dependency-list/package.json b/tools/sf-dependency-list/package.json new file mode 100644 index 000000000..12c843214 --- /dev/null +++ b/tools/sf-dependency-list/package.json @@ -0,0 +1,10 @@ +{ + "devDependencies": { + "bats": "^1.7.0", + "bats-assert": "git+https://github.com/ztombol/bats-assert.git", + "bats-support": "git+https://github.com/ztombol/bats-support.git" + }, + "scripts": { + "test": "bats test" + } +} diff --git a/tools/sf-dependency-list/pipeline.sh b/tools/sf-dependency-list/pipeline.sh new file mode 100755 index 000000000..473a43f04 --- /dev/null +++ b/tools/sf-dependency-list/pipeline.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +set -e + +npm install --no-fund + +PATH=$(npm bin):$PATH npm run test + diff --git a/tools/sf-dependency-list/src/gensfds.sh b/tools/sf-dependency-list/src/gensfds.sh new file mode 100755 index 000000000..72a35d214 --- /dev/null +++ b/tools/sf-dependency-list/src/gensfds.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# directory with shared flows +sfdir="$1" +target=$2 + +if [ -z "$sfdir" ]; then + echo "ERROR: Missing directory with shared flows" + exit 1 +fi +if [ ! -d "$sfdir" ]; then + echo "ERROR: Argument $sfdir is not a directory" + exit 1 +fi + +# either dot or tsort +if [ -z "$target" ]; then + echo "ERROR: Missing argument target type: dot or tsort" + exit 1 +fi +# TODO: [ ] check for valid value + + +cd "$sfdir" || exit + +if [ "$target" = "dot" ]; then + + echo "digraph G {" + echo " rankdir=LR" + echo " node [shape=box,fixedsize=true,width=3]" +fi + +if [ "$target" = "tsort" ]; then + + dag="" + + declare -a orphans=() + declare -A visited +fi + +for sf in */; do + + sflow="${sf::-1}" + + # check for structural integrity + if [ ! -e "${sf}sharedflowbundle/policies" ];then + echo "ERROR: $sf directory is not a shared flow file structure. Missing: ${sf}sharedflowbundle/policies" + exit 1 + fi + + pushd "${sf}sharedflowbundle/policies" > /dev/null || exit + +if [ "$target" = "dot" ]; then + + list=$(grep -Ril "" "$sflow" + + grep '<]" '{print" \"" $3 "\";"}' + done + fi +fi + +if [ "$target" = "tsort" ]; then + list=$(grep -Ril "<]" '{print $3 "" }')" + visited[$to]=true + dag="$dag$sflow $to"$'\n' + done + fi + + +fi + popd > /dev/null || exit + +done + +if [ "$target" = "dot" ]; then + echo "}" +fi + +if [ "$target" = "tsort" ]; then + echo -n "$dag"|tsort|tac + + for sf in "${orphans[@]}"; do + if [ ! "${visited[$sf]}" ]; then + echo "$sf" + fi + done +fi diff --git a/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml new file mode 100644 index 000000000..b25398936 --- /dev/null +++ b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml @@ -0,0 +1,27 @@ + + + + FC-CheckTokenNotReused + + + check-token-not-reused + + + Bearer + + + \ No newline at end of file diff --git a/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml new file mode 100644 index 000000000..4b26ac98f --- /dev/null +++ b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml @@ -0,0 +1,24 @@ + + + + FC-ValidateAudience + validate-audience-in-jwt + + + 401 + + \ No newline at end of file diff --git a/tools/sf-dependency-list/test/test.bats b/tools/sf-dependency-list/test/test.bats new file mode 100644 index 000000000..77e232815 --- /dev/null +++ b/tools/sf-dependency-list/test/test.bats @@ -0,0 +1,56 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +setup() { + + node_module_path() { + bats_location=$(which bats); + echo "${bats_location%/*/*/*/*}"; + } + + load "$(node_module_path)/bats-assert/load.bash"; + load "$(node_module_path)/bats-support/load.bash"; + + DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" + PATH="$DIR/../src:$PATH" +} + +@test "Directory with no shared flows" { + run gensfds.sh $DIR/no-shared-flows tsort + + assert_output 'ERROR: */ directory is not a shared flow file structure. Missing: */sharedflowbundle/policies' +} + +@test "Generate dot output" { + run gensfds.sh $DIR/shared-flows dot + + assert_output 'digraph G { + rankdir=LR + node [shape=box,fixedsize=true,width=3] + "add-response-fapi-interaction-id"; + "authenticate-with-private-key-jwt" -> "validate-audience-in-jwt"; + "authenticate-with-private-key-jwt" -> "check-token-not-reused"; + "check-token-not-reused"; + "validate-audience-in-jwt"; +}' +} + +@test "Generate tsort output" { + run gensfds.sh $DIR/shared-flows tsort + + assert_output 'validate-audience-in-jwt +check-token-not-reused +authenticate-with-private-key-jwt +add-response-fapi-interaction-id' +} From 023e666355429c489c2875040f5878599ab89616 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 21:31:25 +0100 Subject: [PATCH 110/562] Fill empty directories --- .../AM-Generate-New-Fapi-Interaction-Id.xml | 13 +++++++++++++ .../AM-SetErrorTypeForDynClientRegToken.xml | 14 ++++++++++++++ .../policies/AM-ExtractAudFromAudArray.xml | 11 +++++++++++ 3 files changed, 38 insertions(+) create mode 100644 tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml create mode 100644 tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml create mode 100644 tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml diff --git a/tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml b/tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml new file mode 100644 index 000000000..fd4dda347 --- /dev/null +++ b/tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml @@ -0,0 +1,13 @@ + + + AM-Generate-New-Fapi-Interaction-Id + + + + +

{createUuid()}
+ + + true + + \ No newline at end of file diff --git a/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml b/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml new file mode 100644 index 000000000..3c36629f8 --- /dev/null +++ b/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml @@ -0,0 +1,14 @@ + + + AM-SetErrorTypeForDynClientRegToken + + errorType + invalid_client_metadata + + + TokenReusedMessage + + + true + + \ No newline at end of file diff --git a/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml b/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml new file mode 100644 index 000000000..03af5a017 --- /dev/null +++ b/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml @@ -0,0 +1,11 @@ + + + AM-ExtractAudFromAudArray + + + audAsString + + + true + + \ No newline at end of file From 448e0d84ba3ab6ce08762b3f57454445f9873cd4 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 21:33:49 +0100 Subject: [PATCH 111/562] Fill empty directories --- tools/sf-dependency-list/test/no-shared-flows/.gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tools/sf-dependency-list/test/no-shared-flows/.gitignore diff --git a/tools/sf-dependency-list/test/no-shared-flows/.gitignore b/tools/sf-dependency-list/test/no-shared-flows/.gitignore new file mode 100644 index 000000000..e69de29bb From 9b8567aa0c8ddb77db657f7995a0d3b03279223a Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 21:58:37 +0100 Subject: [PATCH 112/562] Grep with guaranteed order --- tools/sf-dependency-list/src/gensfds.sh | 4 ++-- tools/sf-dependency-list/test/test.bats | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/sf-dependency-list/src/gensfds.sh b/tools/sf-dependency-list/src/gensfds.sh index 72a35d214..2b4878057 100755 --- a/tools/sf-dependency-list/src/gensfds.sh +++ b/tools/sf-dependency-list/src/gensfds.sh @@ -66,7 +66,7 @@ for sf in */; do if [ "$target" = "dot" ]; then - list=$(grep -Ril " "validate-audience-in-jwt"; "authenticate-with-private-key-jwt" -> "check-token-not-reused"; + "authenticate-with-private-key-jwt" -> "validate-audience-in-jwt"; "check-token-not-reused"; "validate-audience-in-jwt"; }' @@ -49,8 +49,8 @@ setup() { @test "Generate tsort output" { run gensfds.sh $DIR/shared-flows tsort - assert_output 'validate-audience-in-jwt -check-token-not-reused + assert_output 'check-token-not-reused +validate-audience-in-jwt authenticate-with-private-key-jwt add-response-fapi-interaction-id' } From 436bb115ecff67f51098f8bd14c9f8b23681a9cd Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 22:12:38 +0100 Subject: [PATCH 113/562] Update package-lock.json to latest npm syntax --- tools/sf-dependency-list/package-lock.json | 51 +++++++++++++++++++--- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/tools/sf-dependency-list/package-lock.json b/tools/sf-dependency-list/package-lock.json index 3352bd7f5..550d52577 100644 --- a/tools/sf-dependency-list/package-lock.json +++ b/tools/sf-dependency-list/package-lock.json @@ -1,6 +1,40 @@ { + "name": "sf-dependency-list", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, + "packages": { + "": { + "devDependencies": { + "bats": "^1.7.0", + "bats-assert": "git+https://github.com/ztombol/bats-assert.git", + "bats-support": "git+https://github.com/ztombol/bats-support.git" + } + }, + "node_modules/bats": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/bats/-/bats-1.7.0.tgz", + "integrity": "sha512-pt5zjJQUB4+JI8Si+z/IAWc8yhMyhdZs6IXMCKgzF768dUIyW5xyBstWtDI5uGSa80v7UQOhh+w0GA4p4+01Bg==", + "dev": true, + "bin": { + "bats": "bin/bats" + } + }, + "node_modules/bats-assert": { + "version": "0.3.0", + "resolved": "git+ssh://git@github.com/ztombol/bats-assert.git#9f88b4207da750093baabc4e3f41bf68f0dd3630", + "integrity": "sha512-Kc26Vivsgo/vHiQB58lJlUesuNvamI2eruKNxTgJPBNt1AVWSuwhrfD7q9rPipgiq3hjc3ypBq7+mKVFUJQ5qw==", + "dev": true, + "peerDependencies": { + "bats-support": "git+https://github.com/ztombol/bats-support.git#v0.2.0" + } + }, + "node_modules/bats-support": { + "version": "0.3.0", + "resolved": "git+ssh://git@github.com/ztombol/bats-support.git#004e707638eedd62e0481e8cdc9223ad471f12ee", + "integrity": "sha512-FGdYcEKXfLItuXp3k/4myfjDEvi6SMOJvFOBfJFMibOGSPIvLBPWwW9dLBLxIFWOiYD4lRPnwhVhoF0iCLL2Iw==", + "dev": true + } + }, "dependencies": { "bats": { "version": "1.7.0", @@ -9,14 +43,17 @@ "dev": true }, "bats-assert": { - "version": "git+https://github.com/ztombol/bats-assert.git#9f88b4207da750093baabc4e3f41bf68f0dd3630", - "from": "git+https://github.com/ztombol/bats-assert.git", - "dev": true + "version": "git+ssh://git@github.com/ztombol/bats-assert.git#9f88b4207da750093baabc4e3f41bf68f0dd3630", + "integrity": "sha512-Kc26Vivsgo/vHiQB58lJlUesuNvamI2eruKNxTgJPBNt1AVWSuwhrfD7q9rPipgiq3hjc3ypBq7+mKVFUJQ5qw==", + "dev": true, + "from": "bats-assert@git+https://github.com/ztombol/bats-assert.git", + "requires": {} }, "bats-support": { - "version": "git+https://github.com/ztombol/bats-support.git#004e707638eedd62e0481e8cdc9223ad471f12ee", - "from": "git+https://github.com/ztombol/bats-support.git", - "dev": true + "version": "git+ssh://git@github.com/ztombol/bats-support.git#004e707638eedd62e0481e8cdc9223ad471f12ee", + "integrity": "sha512-FGdYcEKXfLItuXp3k/4myfjDEvi6SMOJvFOBfJFMibOGSPIvLBPWwW9dLBLxIFWOiYD4lRPnwhVhoF0iCLL2Iw==", + "dev": true, + "from": "bats-support@git+https://github.com/ztombol/bats-support.git" } } } From db707325d6f75b9e015d9fa0272c8de5418e378a Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 22:22:37 +0100 Subject: [PATCH 114/562] Fix linting and licensing --- tools/sf-dependency-list/src/gensfds.sh | 4 ++-- .../AM-Generate-New-Fapi-Interaction-Id.xml | 15 +++++++++++++++ .../AM-SetErrorTypeForDynClientRegToken.xml | 15 +++++++++++++++ .../policies/AM-ExtractAudFromAudArray.xml | 15 +++++++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/tools/sf-dependency-list/src/gensfds.sh b/tools/sf-dependency-list/src/gensfds.sh index 2b4878057..105a2b13d 100755 --- a/tools/sf-dependency-list/src/gensfds.sh +++ b/tools/sf-dependency-list/src/gensfds.sh @@ -66,7 +66,7 @@ for sf in */; do if [ "$target" = "dot" ]; then - list=$(grep -Ril " + AM-Generate-New-Fapi-Interaction-Id diff --git a/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml b/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml index 3c36629f8..becf5c9bd 100644 --- a/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml +++ b/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml @@ -1,4 +1,19 @@ + AM-SetErrorTypeForDynClientRegToken diff --git a/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml b/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml index 03af5a017..cf6818a2e 100644 --- a/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml +++ b/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml @@ -1,4 +1,19 @@ + AM-ExtractAudFromAudArray From f3394962c161e425e3f23016ff86d8984ce8f213 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 22:32:41 +0100 Subject: [PATCH 115/562] disable shellcheck for a valid reason --- tools/sf-dependency-list/src/gensfds.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/sf-dependency-list/src/gensfds.sh b/tools/sf-dependency-list/src/gensfds.sh index 105a2b13d..e01fcf0d4 100755 --- a/tools/sf-dependency-list/src/gensfds.sh +++ b/tools/sf-dependency-list/src/gensfds.sh @@ -66,6 +66,7 @@ for sf in */; do if [ "$target" = "dot" ]; then + # shellcheck disable=SC2046 list=$(grep -Ril " Date: Wed, 18 May 2022 07:52:44 +0100 Subject: [PATCH 116/562] Revert a change in a cicd-pipeline project --- references/cicd-pipeline/jenkins-build/plugins.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 421dfa3ba..6a03ef76e 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -5,7 +5,7 @@ htmlpublisher:1.30 junit:1.63 mask-passwords:3.1 matrix-project:771.v574584b_39e60 -script-security:1172.v35f6a_0b_8207e +script-security:1158.v7c1b_73a_69a_08 token-macro:293.v283932a_0a_b_49 workflow-aggregator:2.7 workflow-multibranch:712.vc169a_1387405 From e313d83e350b9666d0860a777820f185ea29804d Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Tue, 17 May 2022 15:59:47 +0100 Subject: [PATCH 117/562] Bumpt script security plugin to fix CVE --- references/cicd-pipeline/jenkins-build/plugins.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 6a03ef76e..421dfa3ba 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -5,7 +5,7 @@ htmlpublisher:1.30 junit:1.63 mask-passwords:3.1 matrix-project:771.v574584b_39e60 -script-security:1158.v7c1b_73a_69a_08 +script-security:1172.v35f6a_0b_8207e token-macro:293.v283932a_0a_b_49 workflow-aggregator:2.7 workflow-multibranch:712.vc169a_1387405 From 28b3070231b989c31b0123860cf8d3edc7242ef9 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Wed, 18 May 2022 08:29:04 +0100 Subject: [PATCH 118/562] Clarify README; add sample graph --- tools/sf-dependency-list/README.md | 11 ++++++++--- .../images/sf-dependencies.png | Bin 0 -> 342383 bytes 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 tools/sf-dependency-list/images/sf-dependencies.png diff --git a/tools/sf-dependency-list/README.md b/tools/sf-dependency-list/README.md index 56ec0ffd9..9f86a0858 100644 --- a/tools/sf-dependency-list/README.md +++ b/tools/sf-dependency-list/README.md @@ -1,11 +1,16 @@ # gensfds Generate Shared Flow Dependencies -A tool which generates the topologically sorted list of Apigee Shared Flows. +A tool which generates the topologically sorted list of Apigee Shared Flows. This is helpful to figure out the correct install sequence for Apigee Shared Flows. Apigee X/Hybrid causes an error condition if a FlowCallout policy refers to a Shared Flow that is not deployed yet. -The tool also generates dot file that visualises the dependencies. +The tool also generates dot file that visualizes the dependencies. + +Here is a sample dependencies graph: + + +SF Dependencies ## Dependencies @@ -16,7 +21,7 @@ The tool also generates dot file that visualises the dependencies. The simplest way is to directly download a script into a directory of your choice and change its executable permissions. -``` +```bash curl -LO https://raw.githubusercontent.com/apigee/devrel/main/tools/sf-dependency-list/src/gensfds.sh &&chmod +x gensfds.sh ``` diff --git a/tools/sf-dependency-list/images/sf-dependencies.png b/tools/sf-dependency-list/images/sf-dependencies.png new file mode 100644 index 0000000000000000000000000000000000000000..939faaa96f61a032ef539b9c1ac7f4c541b2a591 GIT binary patch literal 342383 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 aL!O`0X8x*jGvomKr>ARp4gLGWXa5JNsQKXl literal 0 HcmV?d00001 From 8841dad71e27187a26a8b0a509608741acf31c8f Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 18 May 2022 09:26:28 +0200 Subject: [PATCH 119/562] explicit private/public cluster for hybrid quickstart --- tools/hybrid-quickstart/steps.sh | 77 ++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 81ca823b9..6716f84f5 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -375,35 +375,57 @@ create_gke_cluster() { if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" fi - - CLUSTER_FLAGS="--no-enable-master-authorized-networks --enable-private-nodes --master-ipv4-cidr $CONTROL_PLANE_CIDR --tags=hybrid-quickstart,private-cluster" + gcloud container clusters create "$GKE_CLUSTER_NAME" \ + --no-enable-master-authorized-networks \ + --enable-private-nodes \ + --master-ipv4-cidr="$CONTROL_PLANE_CIDR" \ + --tags="hybrid-quickstart,private-cluster" \ + --region "$REGION" \ + --node-locations "$ZONE" \ + --release-channel stable \ + --enable-ip-alias \ + --enable-shielded-nodes \ + --shielded-secure-boot \ + --shielded-integrity-monitoring \ + --network "$NETWORK" \ + --subnetwork "$SUBNET" \ + --default-max-pods-per-node "110" \ + --enable-ip-alias \ + --machine-type "$GKE_CLUSTER_MACHINE_TYPE" \ + --num-nodes "4" \ + --enable-autoscaling \ + --min-nodes "3" \ + --max-nodes "6" \ + --tags=hybrid-quickstart \ + --labels mesh_id="$MESH_ID" \ + --workload-pool "$WORKLOAD_POOL" \ + --logging SYSTEM,WORKLOAD \ + --monitoring SYSTEM else - CLUSTER_FLAGS="--tags=hybrid-quickstart" + gcloud container clusters create "$GKE_CLUSTER_NAME" \ + --tags="hybrid-quickstart" \ + --region "$REGION" \ + --node-locations "$ZONE" \ + --release-channel stable \ + --enable-ip-alias \ + --enable-shielded-nodes \ + --shielded-secure-boot \ + --shielded-integrity-monitoring \ + --network "$NETWORK" \ + --subnetwork "$SUBNET" \ + --default-max-pods-per-node "110" \ + --enable-ip-alias \ + --machine-type "$GKE_CLUSTER_MACHINE_TYPE" \ + --num-nodes "4" \ + --enable-autoscaling \ + --min-nodes "3" \ + --max-nodes "6" \ + --tags=hybrid-quickstart \ + --labels mesh_id="$MESH_ID" \ + --workload-pool "$WORKLOAD_POOL" \ + --logging SYSTEM,WORKLOAD \ + --monitoring SYSTEM fi - - - gcloud container clusters create "$GKE_CLUSTER_NAME" "$CLUSTER_FLAGS" \ - --region "$REGION" \ - --node-locations "$ZONE" \ - --release-channel stable \ - --enable-ip-alias \ - --enable-shielded-nodes \ - --shielded-secure-boot \ - --shielded-integrity-monitoring \ - --network "$NETWORK" \ - --subnetwork "$SUBNET" \ - --default-max-pods-per-node "110" \ - --enable-ip-alias \ - --machine-type "$GKE_CLUSTER_MACHINE_TYPE" \ - --num-nodes "4" \ - --enable-autoscaling \ - --min-nodes "3" \ - --max-nodes "6" \ - --tags=hybrid-quickstart \ - --labels mesh_id="$MESH_ID" \ - --workload-pool "$WORKLOAD_POOL" \ - --logging SYSTEM,WORKLOAD \ - --monitoring SYSTEM fi gcloud container clusters get-credentials "$GKE_CLUSTER_NAME" --region "$REGION" @@ -415,7 +437,6 @@ create_gke_cluster() { echo "✅ GKE set up" } - install_certmanager() { echo "👩🏽‍💼 Creating Cert Manager" kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/$CERT_MANAGER_VERSION/cert-manager.yaml From c0fc0f2e393a242699938a700ab83176effbaf33 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 18 May 2022 09:30:45 +0200 Subject: [PATCH 120/562] Run CI on higher speced machine type --- tools/pipeline-runner/cloudbuild.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/pipeline-runner/cloudbuild.yaml b/tools/pipeline-runner/cloudbuild.yaml index 3bf419143..8b95ffdcb 100644 --- a/tools/pipeline-runner/cloudbuild.yaml +++ b/tools/pipeline-runner/cloudbuild.yaml @@ -129,6 +129,8 @@ availableSecrets: env: APIGEE_USER - versionName: projects/$PROJECT_ID/secrets/devrel_github_token/versions/latest env: GITHUB_TOKEN +options: + machineType: 'E2_HIGHCPU_8' timeout: 7200s # 120min (needs to be updated with max_duration of pipeline) images: ['gcr.io/$PROJECT_ID/devrel-pipeline:latest'] substitutions: From fa36cbe4f98b1306808fd5ae13224d927b770af8 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Wed, 18 May 2022 09:09:48 +0100 Subject: [PATCH 121/562] Action the feedback --- tools/sf-dependency-list/README.md | 2 +- tools/sf-dependency-list/pipeline.sh | 2 -- .../policies/AM-Generate-New-Fapi-Interaction-Id.xml | 4 +--- .../sharedflowbundle/policies/FC-CheckTokenNotReused.xml | 4 +--- .../sharedflowbundle/policies/FC-ValidateAudience.xml | 2 +- .../policies/AM-SetErrorTypeForDynClientRegToken.xml | 2 +- .../sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml | 3 +-- 7 files changed, 6 insertions(+), 13 deletions(-) diff --git a/tools/sf-dependency-list/README.md b/tools/sf-dependency-list/README.md index 9f86a0858..3f24a8971 100644 --- a/tools/sf-dependency-list/README.md +++ b/tools/sf-dependency-list/README.md @@ -2,7 +2,7 @@ A tool which generates the topologically sorted list of Apigee Shared Flows. This is helpful to figure out the correct install sequence for Apigee Shared Flows. -Apigee X/Hybrid causes an error condition if a FlowCallout policy refers to +Apigee X/hybrid causes an error condition if a FlowCallout policy refers to a Shared Flow that is not deployed yet. The tool also generates dot file that visualizes the dependencies. diff --git a/tools/sf-dependency-list/pipeline.sh b/tools/sf-dependency-list/pipeline.sh index 473a43f04..18946e11a 100755 --- a/tools/sf-dependency-list/pipeline.sh +++ b/tools/sf-dependency-list/pipeline.sh @@ -16,8 +16,6 @@ set -e -set -e - npm install --no-fund PATH=$(npm bin):$PATH npm run test diff --git a/tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml b/tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml index 526e6de75..71218837c 100644 --- a/tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml +++ b/tools/sf-dependency-list/test/shared-flows/add-response-fapi-interaction-id/sharedflowbundle/policies/AM-Generate-New-Fapi-Interaction-Id.xml @@ -14,10 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - + AM-Generate-New-Fapi-Interaction-Id - -

{createUuid()}
diff --git a/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml index b25398936..482602f39 100644 --- a/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml +++ b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-CheckTokenNotReused.xml @@ -14,10 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - + FC-CheckTokenNotReused - - check-token-not-reused diff --git a/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml index 4b26ac98f..5ca908f76 100644 --- a/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml +++ b/tools/sf-dependency-list/test/shared-flows/authenticate-with-private-key-jwt/sharedflowbundle/policies/FC-ValidateAudience.xml @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. --> - + FC-ValidateAudience validate-audience-in-jwt diff --git a/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml b/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml index becf5c9bd..4a0b533fe 100644 --- a/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml +++ b/tools/sf-dependency-list/test/shared-flows/check-token-not-reused/sharedflowbundle/policies/AM-SetErrorTypeForDynClientRegToken.xml @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. --> - + AM-SetErrorTypeForDynClientRegToken errorType diff --git a/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml b/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml index cf6818a2e..df9afc3d2 100644 --- a/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml +++ b/tools/sf-dependency-list/test/shared-flows/validate-audience-in-jwt/sharedflowbundle/policies/AM-ExtractAudFromAudArray.xml @@ -14,9 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - + AM-ExtractAudFromAudArray - audAsString From 165078fc4de7913e2a9ed9cfe3cd19152b588f9a Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Wed, 18 May 2022 09:42:01 +0100 Subject: [PATCH 122/562] Action the feedback --- tools/sf-dependency-list/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 tools/sf-dependency-list/.gitignore diff --git a/tools/sf-dependency-list/.gitignore b/tools/sf-dependency-list/.gitignore deleted file mode 100644 index 40b878db5..000000000 --- a/tools/sf-dependency-list/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file From 0c9c0088602f24f26ce275df7e703cdfb80ee614 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 23 May 2022 10:46:06 +0200 Subject: [PATCH 123/562] mention direct cloud logging feature in shared flow --- references/cloud-logging-shared-flow/README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/references/cloud-logging-shared-flow/README.md b/references/cloud-logging-shared-flow/README.md index f1144418b..b70acd996 100644 --- a/references/cloud-logging-shared-flow/README.md +++ b/references/cloud-logging-shared-flow/README.md @@ -1,14 +1,20 @@ # Cloud Logging Shared Flow +***Note:*** Apigee X and hybrid >= 1.7.0 support logging to Google Cloud Logging +via the default [MessageLogging Policy](https://cloud.google.com/apigee/docs/api-platform/reference/policies/message-logging-policy). +The service callout used in this implementation is no longer required for +these versions of Apigee. + Reference implementation for a shared flow to log to [Google Cloud Logging](https://cloud.google.com/logging) from within an Apigee Proxy. ## Compatibility This example is built using the [GCP Service Account Association](https://cloud.google.com/apigee/docs/api-platform/security/google-auth/overview) -that is available in Apigee X. For scenarios where this option is not -available you could make use of the [GCP SA shared flow](../gcp-sa-auth-shared-flow) -to obtain a valid access token and use it within the ServiceCallout policy. +that is available in Apigee X and newer versions of hybrid. +For scenarios where this option is not available you can make use of the +[GCP SA shared flow](../gcp-sa-auth-shared-flow) to obtain a valid access +token and use it within the ServiceCallout policy. ## Usage From 41891744e91e30340632955116dd0790def50e53 Mon Sep 17 00:00:00 2001 From: Yuriy Lesyuk Date: Wed, 25 May 2022 15:13:30 +0100 Subject: [PATCH 124/562] Clean the code owners list for gensfds.sh --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 634b5948a..f310e9e3d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -33,4 +33,4 @@ /tools/oas-configurable-proxy @danistrebel /tools/pipeline-linter @seymen @danistrebel /tools/pipeline-runner @seymen @danistrebel -/tools/sf-dependency-list @yuriylesyuk @danistrebel +/tools/sf-dependency-list @yuriylesyuk From a2024c4f7885789e115406775f2a196ca912fccf Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 27 May 2022 09:22:12 +0200 Subject: [PATCH 125/562] allow cloud build to write per-solution logs --- tools/pipeline-runner/cloudbuild.yaml | 34 +++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/tools/pipeline-runner/cloudbuild.yaml b/tools/pipeline-runner/cloudbuild.yaml index 8b95ffdcb..4c1f43e78 100644 --- a/tools/pipeline-runner/cloudbuild.yaml +++ b/tools/pipeline-runner/cloudbuild.yaml @@ -92,17 +92,42 @@ steps: secretEnv: - 'APIGEE_USER' - 'APIGEE_PASS' - - name: 'gcr.io/$PROJECT_ID/devrel-pipeline:latest' - id: 'Create GH Comment or Issue' + - name: 'gcr.io/cloud-builders/gcloud' + id: 'Log pipeline results to cloud logging' entrypoint: "bash" args: - "-c" - |- - if [ ! -f ./pipeline-result.txt ];then + jq -Rsn --arg RUN_TYPE "$_RUN_TYPE" --arg BUILD_ID "$BUILD_ID" ' + [inputs + | . / "\n" + | (.[] | select(length > 0) | . / ";") as $$input + | {"build": $$BUILD_ID, "type": $$RUN_TYPE, "solution": $$input[0], "success": $$input[1] | test("pass"), "duration": $$input[2] | sub("s"; "") | tonumber} + ] + ' <./pipeline-result.txt > results.json + + + cat results.json | jq -r -c '.[]|.' | while read -r log; do + if [ "$(echo "$$log" | jq '.success')" = "true" ]; then + SEVERITY=INFO + else + SEVERITY=ERROR + fi + gcloud logging write pipeline-results "$$log" --payload-type=json --severity $$SEVERITY + done + + if [ ! -f ./pipeline-result.txt ]; then echo "No Results Reported;fail;N/A" > ./pipeline-result.txt; - elif ! grep -qF "TOTAL PIPELINE" ./pipeline-result.txt;then + elif ! grep -qF "TOTAL PIPELINE" ./pipeline-result.txt; then echo "Pipeline Timeout;fail;[max duration]" >> ./pipeline-result.txt; fi + + - name: 'gcr.io/$PROJECT_ID/devrel-pipeline:latest' + id: 'Create GH Comment or Issue' + entrypoint: "bash" + args: + - "-c" + - |- cat ./pipeline-result.txt | github-api.sh env: - 'BUILD_ID=$BUILD_ID' @@ -146,4 +171,5 @@ substitutions: _CREATE_GH_ISSUE: "false" # true|false _REPO_GH_ISSUE: "apigee/devrel" _GH_BOT_NAME: "apigee-devrel-bot" + _RUN_TYPE: "unknown" #_PR_NUMBER: "" # automatically set for PRs From b9f73182c99dee1d619bfc69c8fe48afe8d45c57 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 27 May 2022 10:41:20 +0200 Subject: [PATCH 126/562] disable cloud logging for full pipeline output --- tools/pipeline-runner/cloudbuild.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/pipeline-runner/cloudbuild.yaml b/tools/pipeline-runner/cloudbuild.yaml index 4c1f43e78..3d7dbf65c 100644 --- a/tools/pipeline-runner/cloudbuild.yaml +++ b/tools/pipeline-runner/cloudbuild.yaml @@ -92,7 +92,7 @@ steps: secretEnv: - 'APIGEE_USER' - 'APIGEE_PASS' - - name: 'gcr.io/cloud-builders/gcloud' + - name: 'gcr.io/$PROJECT_ID/devrel-pipeline:latest' id: 'Log pipeline results to cloud logging' entrypoint: "bash" args: @@ -156,6 +156,7 @@ availableSecrets: env: GITHUB_TOKEN options: machineType: 'E2_HIGHCPU_8' + logging: GCS_ONLY timeout: 7200s # 120min (needs to be updated with max_duration of pipeline) images: ['gcr.io/$PROJECT_ID/devrel-pipeline:latest'] substitutions: From 44e7fb966961a7b76b7a8b6c481892d78e52cd78 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 27 May 2022 13:17:43 +0200 Subject: [PATCH 127/562] web link for IDP okta project --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 382172a82..cc4df62bf 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ technical or non-technical topic. - [BDD Proxy Development](labs/bdd-proxy-development) [(web)](https://apigee.github.io/devrel/labs/bdd-proxy-development) A 200 level lab demonstrating behavior-driven API development by building, deploying and testing a mock API, generated from an Open API Specification. -- [Identity facade with Okta](labs/idp-okta-integration) +- [Identity facade with Okta](labs/idp-okta-integration) [(web)](https://apigee.github.io/devrel/labs/idp-okta-integration) A 300 level lab that shows how to configure the Apigee Identity Facade with Okta IDP. ## Contributing From 466dbc7e6bfb54fb8daedb0e536c3d07b76d4c8c Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 20 May 2022 14:04:27 +0200 Subject: [PATCH 128/562] more stable readniess checks for hybrid quickstart --- tools/hybrid-quickstart/steps.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 6716f84f5..62d135d14 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -771,6 +771,7 @@ apigeectl_init() { } apigeectl_apply() { + kubectl wait --for=condition=ready --timeout 240s pod -l app=apigee-controller -n apigee-system "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml } @@ -785,8 +786,10 @@ install_runtime() { || ( sleep 240 && apigeectl_init ) sleep 2 && echo -n "⏳ Waiting for Apigeectl init " - wait_for_ready "Running" "kubectl get po -l app=apigee-controller -n apigee-system -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Controller: Running" - echo "waiting for 30s for the webhook certs to propagate" && sleep 30 + kubectl wait --for=condition=ready --timeout 240s pod -l app=apigee-controller -n apigee-system + kubectl wait --for=condition=complete --timeout 240s job/apigee-resources-install -n apigee-system + + echo "Waiting for 30s for the webhook certs to propagate" && sleep 30 apigeectl_apply \ || ( sleep 60 && apigeectl_apply ) \ @@ -794,7 +797,7 @@ install_runtime() { || ( sleep 240 && apigeectl_apply ) sleep 2 && echo -n "⏳ Waiting for Apigeectl apply " - wait_for_ready "Running" "kubectl get po -l app=apigee-runtime -n apigee -o=jsonpath='{.items[0].status.phase}' 2>/dev/null" "Apigee Runtime: Running." + kubectl wait --for=condition=ready --timeout 600s pod -l app=apigee-runtime -n apigee popd || return From 86709dcbf331d9a1cc2c01383f54804baef40ffe Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 20 May 2022 17:39:58 +0200 Subject: [PATCH 129/562] tolerance for master hangup during kubectl wait --- tools/hybrid-quickstart/steps.sh | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 62d135d14..2359c428a 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -771,7 +771,7 @@ apigeectl_init() { } apigeectl_apply() { - kubectl wait --for=condition=ready --timeout 240s pod -l app=apigee-controller -n apigee-system + timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml } @@ -780,27 +780,22 @@ install_runtime() { pushd "$HYBRID_HOME" || return # because apigeectl uses pwd-relative paths mkdir -p "$HYBRID_HOME"/generated - apigeectl_init \ - || ( sleep 60 && apigeectl_init ) \ - || ( sleep 120 && apigeectl_init ) \ - || ( sleep 240 && apigeectl_init ) + timeout 10m bash -c 'until apigeectl_init; do sleep 20; done' - sleep 2 && echo -n "⏳ Waiting for Apigeectl init " - kubectl wait --for=condition=ready --timeout 240s pod -l app=apigee-controller -n apigee-system - kubectl wait --for=condition=complete --timeout 240s job/apigee-resources-install -n apigee-system + echo -n "⏳ Waiting for Apigeectl init " + "$APIGEECTL_HOME"/apigeectl check-ready -f "$HYBRID_HOME"/overrides/overrides.yaml + timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' + timeout 5m bash -c 'until kubectl wait --for=condition=complete --timeout 10s job/apigee-resources-install -n apigee-system; do sleep 10; done' echo "Waiting for 30s for the webhook certs to propagate" && sleep 30 - apigeectl_apply \ - || ( sleep 60 && apigeectl_apply ) \ - || ( sleep 120 && apigeectl_apply ) \ - || ( sleep 240 && apigeectl_apply ) + timeout 10m bash -c 'until apigeectl_apply; do sleep 20; done' - sleep 2 && echo -n "⏳ Waiting for Apigeectl apply " - kubectl wait --for=condition=ready --timeout 600s pod -l app=apigee-runtime -n apigee + echo -n "⏳ Waiting for Apigeectl apply " + "$APIGEECTL_HOME"/apigeectl check-ready -f "$HYBRID_HOME"/overrides/overrides.yaml + timeout 30m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-runtime -n apigee; do sleep 10; done' popd || return - echo "🎉🎉🎉 Hybrid installation completed!" } From bc0d2747ee26e03049200cbe3933a536923a6537 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 31 May 2022 07:03:51 +0200 Subject: [PATCH 130/562] exporting helper functions for timeout command --- tools/hybrid-quickstart/steps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 2359c428a..74bd3b806 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -780,19 +780,19 @@ install_runtime() { pushd "$HYBRID_HOME" || return # because apigeectl uses pwd-relative paths mkdir -p "$HYBRID_HOME"/generated + export -f apigeectl_init timeout 10m bash -c 'until apigeectl_init; do sleep 20; done' echo -n "⏳ Waiting for Apigeectl init " - "$APIGEECTL_HOME"/apigeectl check-ready -f "$HYBRID_HOME"/overrides/overrides.yaml timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' timeout 5m bash -c 'until kubectl wait --for=condition=complete --timeout 10s job/apigee-resources-install -n apigee-system; do sleep 10; done' echo "Waiting for 30s for the webhook certs to propagate" && sleep 30 + export -f apigeectl_apply timeout 10m bash -c 'until apigeectl_apply; do sleep 20; done' echo -n "⏳ Waiting for Apigeectl apply " - "$APIGEECTL_HOME"/apigeectl check-ready -f "$HYBRID_HOME"/overrides/overrides.yaml timeout 30m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-runtime -n apigee; do sleep 10; done' popd || return From 970f053c53544f31db30dd318f1eff99db2acfe2 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 31 May 2022 08:05:16 +0200 Subject: [PATCH 131/562] adding wait for cert check --- tools/hybrid-quickstart/steps.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 74bd3b806..f9b894c5b 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -767,11 +767,13 @@ EOF } apigeectl_init() { + echo -n "🏃 Running apigeectl init" "$APIGEECTL_HOME"/apigeectl init -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-init.yaml } apigeectl_apply() { - timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' + echo -n "🏃 Running apigeectl apply" + timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml } @@ -781,19 +783,20 @@ install_runtime() { mkdir -p "$HYBRID_HOME"/generated export -f apigeectl_init - timeout 10m bash -c 'until apigeectl_init; do sleep 20; done' + timeout 12m bash -c 'until apigeectl_init; do sleep 20; done' echo -n "⏳ Waiting for Apigeectl init " - timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' - timeout 5m bash -c 'until kubectl wait --for=condition=complete --timeout 10s job/apigee-resources-install -n apigee-system; do sleep 10; done' + timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' + timeout 5m bash -c 'until kubectl wait --for=condition=complete --timeout 60s job/apigee-resources-install -n apigee-system; do sleep 10; done' - echo "Waiting for 30s for the webhook certs to propagate" && sleep 30 + echo -n "⏳ Waiting for Serving Cert " + timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 60s certificate apigee-serving-cert -n apigee-system; do sleep 10; done' export -f apigeectl_apply - timeout 10m bash -c 'until apigeectl_apply; do sleep 20; done' + timeout 12m bash -c 'until apigeectl_apply; do sleep 20; done' echo -n "⏳ Waiting for Apigeectl apply " - timeout 30m bash -c 'until kubectl wait --for=condition=ready --timeout 10s pod -l app=apigee-runtime -n apigee; do sleep 10; done' + timeout 30m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-runtime -n apigee; do sleep 10; done' popd || return echo "🎉🎉🎉 Hybrid installation completed!" From 0bdff14f6d51f5eaf6d13003e78050c4a24c7d1a Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 31 May 2022 09:08:31 +0200 Subject: [PATCH 132/562] increase timeout in case of cluster repair --- tools/hybrid-quickstart/steps.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index f9b894c5b..bc5ab3378 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -783,14 +783,15 @@ install_runtime() { mkdir -p "$HYBRID_HOME"/generated export -f apigeectl_init - timeout 12m bash -c 'until apigeectl_init; do sleep 20; done' + timeout 20m bash -c 'until apigeectl_init; do sleep 30; done' echo -n "⏳ Waiting for Apigeectl init " - timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' - timeout 5m bash -c 'until kubectl wait --for=condition=complete --timeout 60s job/apigee-resources-install -n apigee-system; do sleep 10; done' + timeout 10m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' + timeout 10m bash -c 'until kubectl wait --for=condition=ready --timeout 60s issuer apigee-selfsigned-issuer -n apigee-system; do sleep 10; done' + timeout 10m bash -c 'until kubectl wait --for=condition=ready --timeout 60s certificate apigee-serving-cert -n apigee-system; do sleep 10; done' + timeout 10m bash -c 'until kubectl wait --for=condition=complete --timeout 60s job/apigee-resources-install -n apigee-system; do sleep 10; done' echo -n "⏳ Waiting for Serving Cert " - timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 60s certificate apigee-serving-cert -n apigee-system; do sleep 10; done' export -f apigeectl_apply timeout 12m bash -c 'until apigeectl_apply; do sleep 20; done' From 8d89a602c29a27ae89d342638b8bab090d2b8c8e Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 31 May 2022 11:07:37 +0200 Subject: [PATCH 133/562] increase hybrid quickstart timeout --- tools/hybrid-quickstart/cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/cloudbuild.yaml b/tools/hybrid-quickstart/cloudbuild.yaml index cf2b9b544..56d08d4fd 100644 --- a/tools/hybrid-quickstart/cloudbuild.yaml +++ b/tools/hybrid-quickstart/cloudbuild.yaml @@ -75,7 +75,7 @@ steps: echo "Earlier failure in the pipeline" exit -1 fi -timeout: 2700s #45min +timeout: 3600s #60min substitutions: _QUICKSTART_ENV_NAME: test1 _QUICKSTART_ENV_GROUP_NAME: test From 5d1a1d517a98d6d619cf0887a62a787383bf4ac2 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 2 Jun 2022 10:35:45 +0200 Subject: [PATCH 134/562] improve pipeline readability --- tools/pipeline-linter/check-codeowners.sh | 3 ++ tools/pipeline-linter/check-license.sh | 2 ++ tools/pipeline-linter/check-readme.sh | 2 ++ tools/pipeline-linter/generate-all-docs.sh | 4 +++ tools/pipeline-runner/cloud-logging.sh | 32 +++++++++++++++++++++ tools/pipeline-runner/cloudbuild.yaml | 33 ++++++---------------- tools/pipeline-runner/github-api.sh | 4 +++ tools/pipeline-runner/list-repo-changes.sh | 2 ++ tools/pipeline-runner/run-pipelines.sh | 16 +++++------ 9 files changed, 64 insertions(+), 34 deletions(-) create mode 100755 tools/pipeline-runner/cloud-logging.sh diff --git a/tools/pipeline-linter/check-codeowners.sh b/tools/pipeline-linter/check-codeowners.sh index d9b5716af..b1a80407b 100755 --- a/tools/pipeline-linter/check-codeowners.sh +++ b/tools/pipeline-linter/check-codeowners.sh @@ -14,6 +14,9 @@ # limitations under the License. +# Ensures that all sub-projects in this repository are listed +# in the CODEOWNERS file in the root of the repository. + set -e ERRORS="" diff --git a/tools/pipeline-linter/check-license.sh b/tools/pipeline-linter/check-license.sh index 26d07f053..4b6939c62 100755 --- a/tools/pipeline-linter/check-license.sh +++ b/tools/pipeline-linter/check-license.sh @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Ensures that all files in this repository have the required license headers + set -e addlicense -check "$PWD" diff --git a/tools/pipeline-linter/check-readme.sh b/tools/pipeline-linter/check-readme.sh index fa2277785..477f26eee 100755 --- a/tools/pipeline-linter/check-readme.sh +++ b/tools/pipeline-linter/check-readme.sh @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Ensures that all sub-projects in this repository are listed +# in the README file in the root of the repository. set -e diff --git a/tools/pipeline-linter/generate-all-docs.sh b/tools/pipeline-linter/generate-all-docs.sh index cd4228217..5f3809478 100755 --- a/tools/pipeline-linter/generate-all-docs.sh +++ b/tools/pipeline-linter/generate-all-docs.sh @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Runs the `generate-docs.sh` command for every sub-project and +# creates a `generated` folder in the root of the readme that can +# be used to serve static web content for labs etc. + rm -rf ./generated mkdir -p ./generated/references diff --git a/tools/pipeline-runner/cloud-logging.sh b/tools/pipeline-runner/cloud-logging.sh new file mode 100755 index 000000000..fcb0eef67 --- /dev/null +++ b/tools/pipeline-runner/cloud-logging.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +cat | jq -Rsn --arg RUN_TYPE "$_RUN_TYPE" --arg BUILD_ID "$BUILD_ID" ' + [inputs + | . / "\n" + | (.[] | select(length > 0) | . / ";") as $input + | {"build": $BUILD_ID, "type": $RUN_TYPE, "solution": $input[0], "success": $input[1] | test("pass"), "duration": $input[2]} + ] + | map(.duration = (.duration | sub("s"; "") | tonumber? // 0)) +' > results.json + +cat results.json | jq -r -c '.[]|.' | while read -r log; do + if [ "$(echo "$log" | jq '.success')" = "true" ]; then + SEVERITY=INFO + else + SEVERITY=ERROR + fi + gcloud logging write pipeline-results "$log" --payload-type=json --severity $SEVERITY +done \ No newline at end of file diff --git a/tools/pipeline-runner/cloudbuild.yaml b/tools/pipeline-runner/cloudbuild.yaml index 3d7dbf65c..2e28daefe 100644 --- a/tools/pipeline-runner/cloudbuild.yaml +++ b/tools/pipeline-runner/cloudbuild.yaml @@ -81,6 +81,12 @@ steps: else timeout "$$max_duration" run-pipelines.sh "$_CI_PROJECT" || true fi + + if [ ! -f ./pipeline-result.txt ]; then + echo "No Results Reported;fail;N/A" > ./pipeline-result.txt; + elif ! grep -qF "TOTAL PIPELINE" ./pipeline-result.txt; then + echo "Pipeline Timeout;fail;[max duration]" >> ./pipeline-result.txt; + fi env: - 'APIGEE_ENV=$_APIGEE_ENV' - 'APIGEE_ORG=$_APIGEE_ORG' @@ -93,35 +99,12 @@ steps: - 'APIGEE_USER' - 'APIGEE_PASS' - name: 'gcr.io/$PROJECT_ID/devrel-pipeline:latest' - id: 'Log pipeline results to cloud logging' + id: 'Write pipeline results to cloud logging' entrypoint: "bash" args: - "-c" - |- - jq -Rsn --arg RUN_TYPE "$_RUN_TYPE" --arg BUILD_ID "$BUILD_ID" ' - [inputs - | . / "\n" - | (.[] | select(length > 0) | . / ";") as $$input - | {"build": $$BUILD_ID, "type": $$RUN_TYPE, "solution": $$input[0], "success": $$input[1] | test("pass"), "duration": $$input[2] | sub("s"; "") | tonumber} - ] - ' <./pipeline-result.txt > results.json - - - cat results.json | jq -r -c '.[]|.' | while read -r log; do - if [ "$(echo "$$log" | jq '.success')" = "true" ]; then - SEVERITY=INFO - else - SEVERITY=ERROR - fi - gcloud logging write pipeline-results "$$log" --payload-type=json --severity $$SEVERITY - done - - if [ ! -f ./pipeline-result.txt ]; then - echo "No Results Reported;fail;N/A" > ./pipeline-result.txt; - elif ! grep -qF "TOTAL PIPELINE" ./pipeline-result.txt; then - echo "Pipeline Timeout;fail;[max duration]" >> ./pipeline-result.txt; - fi - + cat ./pipeline-result.txt | cloud-logging.sh - name: 'gcr.io/$PROJECT_ID/devrel-pipeline:latest' id: 'Create GH Comment or Issue' entrypoint: "bash" diff --git a/tools/pipeline-runner/github-api.sh b/tools/pipeline-runner/github-api.sh index 29d453613..dad2e0dd4 100755 --- a/tools/pipeline-runner/github-api.sh +++ b/tools/pipeline-runner/github-api.sh @@ -12,6 +12,10 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + +# Helper utility to publish the pipeline build results as +# Github issues (failed nightly) or comment (PR) + buildresult=$(cat) REPORT_ROWS=$(echo "$buildresult" | awk -F";" '$0="|"$1"|"$2"|"$3"|"' OFS="|") diff --git a/tools/pipeline-runner/list-repo-changes.sh b/tools/pipeline-runner/list-repo-changes.sh index ab5fef5a0..eddffa75f 100755 --- a/tools/pipeline-runner/list-repo-changes.sh +++ b/tools/pipeline-runner/list-repo-changes.sh @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Helper utility to list all sub-project with changes (excluding .md files) + git fetch origin git diff --name-only origin/main | \ diff --git a/tools/pipeline-runner/run-pipelines.sh b/tools/pipeline-runner/run-pipelines.sh index e0e99ce21..8cb8037bf 100755 --- a/tools/pipeline-runner/run-pipelines.sh +++ b/tools/pipeline-runner/run-pipelines.sh @@ -14,11 +14,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Main Pipeline runner script to run pipeline checks for all sub-projects + DIRS="$1" -PIPELINE_REPORT="" DEVREL_ROOT="$PWD" -PATH=$PATH:"$DEVREL_ROOT/tools/another-apigee-client" PATH=$PATH:"$DEVREL_ROOT/tools/apigee-sackmesser/bin" append_pipeline_result() { @@ -49,7 +49,7 @@ if [ -z "$DIRS" ]; then DIRS=$(echo "$DIRS" | cut -c 2-) fi -# Allowing some solutions to run independently and async +# Allowing some solutions to run independently and asynchronous # because they don't have any side effects on the Apigee orgs # used for CI/CD. declare -A async_projects=( @@ -59,7 +59,7 @@ async_pipeline_pids='' TOTAL_STARTTIME=$(date +%s) -# Starting async builds +# Starting asynchronous pipelines for DIR in ${DIRS//,/ } do RELATIVE_DIR=".${DIR:${#DEVREL_ROOT}}" @@ -71,6 +71,7 @@ do fi done +# Starting synchronous pipelines for DIR in ${DIRS//,/ } do RELATIVE_DIR=".${DIR:${#DEVREL_ROOT}}" @@ -92,15 +93,12 @@ for pid in $(echo "$async_pipeline_pids" | tr ";" "\n"); do echo "[INFO] Done #$pid (return=$?)" done +# Signal that all pipelines finished in time TOTAL_ENDTIME=$(date +%s) append_pipeline_result "TOTAL PIPELINE,0,$((TOTAL_ENDTIME-TOTAL_STARTTIME))s" -# print report +# Print report to stdout echo echo "FINAL RESULT" column -s ";" -t ./pipeline-result.txt echo - -# set exit code -! echo "$PIPELINE_REPORT" | tr ";" "\n" | awk -F"," '{ print $2 }' | grep -v -q "0" - From 04c4f276fa8fc295173886836d63fe49a1dc206a Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 2 Jun 2022 10:40:18 +0200 Subject: [PATCH 135/562] docs cloud logging script --- tools/pipeline-runner/cloud-logging.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/pipeline-runner/cloud-logging.sh b/tools/pipeline-runner/cloud-logging.sh index fcb0eef67..dd5734c26 100755 --- a/tools/pipeline-runner/cloud-logging.sh +++ b/tools/pipeline-runner/cloud-logging.sh @@ -13,6 +13,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Helper utility to publish the pipeline build results as +# log entries in cloud logging + cat | jq -Rsn --arg RUN_TYPE "$_RUN_TYPE" --arg BUILD_ID "$BUILD_ID" ' [inputs | . / "\n" From e5421234f239beec3a71b10e036dbcc35f67f313 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 2 Jun 2022 11:22:21 +0200 Subject: [PATCH 136/562] improve sackmesser docs --- tools/apigee-sackmesser/README.md | 40 ++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/tools/apigee-sackmesser/README.md b/tools/apigee-sackmesser/README.md index 7d08e92e9..397915cb0 100644 --- a/tools/apigee-sackmesser/README.md +++ b/tools/apigee-sackmesser/README.md @@ -3,11 +3,19 @@ sackmesser-logo -The Apigee Sackmesser lets you deploy API proxies, shared flows and -configuration to Apigee Edge as well as hybrid/X without writing any additional -manifest files. +> :blue_book: **Sack·mes·ser**: from the German words "Sack" *pocket* and +"Messer" *knife* is the Swiss German name for the famous multi-tool that +is used by adventurers in a variety of practical situations. + +Apigee Sackmesser is a collection of tools that provide a unifying experience +for interacting with the Apigee Management APIs for Apigee X/hybrid and Edge. +It also lets you deploy API proxies, shared flows and configuration to both +stacks without writing any additional manifest files. Please note that Apigee Private Cloud (OPDK) is not yet supported at this time. +For interacting with the management API of Apigee X/hybrid only (without the +need for backwards compatibility for Apigee Edge) you can also try the [apigeecli](https://github.com/apigee/apigeecli) +commandline utility. Sackmesser can be used either as a commandline tool or a Docker container. To use it as a CLI you can add it to your path: @@ -78,7 +86,11 @@ mount to refer to local directories): docker run -v "$PWD":/opt/apigee apigee-sackmesser COMMAND [...] ``` -### Scenario: Deploy a proxy straight from Github to Apigee X / hybrid +### Scenario: Deploy a proxy bundle + +The **deploy** command lets you deploy proxies, shared flows and configurations. + +Example: Deploy a proxy straight from Github to Apigee X / hybrid ```sh sackmesser deploy -g https://github.com/apigee/devrel/tree/main/references/cicd-pipeline \ @@ -89,7 +101,7 @@ sackmesser deploy -g https://github.com/apigee/devrel/tree/main/references/cicd- -b "/airports/v1" ``` -### Scenario: Deploy a proxy from the local file system to Apigee Edge +Example: Deploy a proxy from the local file system to Apigee Edge ```sh MFA= @@ -108,6 +120,10 @@ sackmesser deploy -d "$PWD/../../references/cicd-pipeline" \ ### Scenario: Export all resources of a specific org +The **export** command lets you export proxies and configuration to the local +file system. The resources can be used for analysis and/or to be re-deployed +via the deploy command. + ```sh # Apigee X/hybrid sackmesser export --googleapi -o "$APIGEE_X_ORG" -t "$APIGEE_TOKEN" @@ -118,6 +134,9 @@ sackmesser export --apigeeapi -o "$APIGEE_ORG" -u "$APIGEE_USER" -p "$APIGEE_PAS ### Scenario: List all deployments in a specific org and environment +The **list** command is a helper function around the Apigee management API +to list resources in an Apigee organization. + ```sh # Apigee X/hybrid sackmesser list --googleapi -t "$APIGEE_TOKEN" organizations/$APIGEE_X_ORG/environments/$APIGEE_X_ENV/deployments @@ -128,16 +147,25 @@ sackmesser list --apigeeapi -u "$APIGEE_USER" -p "$APIGEE_PASS" organizations/$A ### Scenario: Clean up all proxies in a specific org +The **clean** command can be used to delete individual resources e.g proxies or +developers from an Apigee organization. + ```sh # Apigee X/hybrid -sackmesser clean --googleapi -t "$APIGEE_TOKEN" proxy all +sackmesser clean --googleapi -t "$APIGEE_TOKEN" -o "$APIGEE_X_ORG" proxy all +sackmesser clean developer "janedoe@example.com" --googleapi -t "$APIGEE_TOKEN" -o "$APIGEE_X_ORG" # Apigee Edge sackmesser clean --apigeeapi -u "$APIGEE_USER" -p "$APIGEE_PASS" proxy all +sackmesser clean developer "janedoe@example.com" --apigeeapi -u "$APIGEE_USER" -p "$APIGEE_PASS" ``` ### Scenario: Create a Report of Deployments in an Environment +The **report** command can be used to create an HTML report that shows the +usage of Apigee features and their compliance with best practices +within an environment. + ```sh # Apigee X/hybrid sackmesser report --googleapi -t "$TOKEN" -o "$APIGEE_X_ORG" -e "$APIGEE_X_ENV" From 5b8a60bdf2d79ef5b4bcd5e9beeb0ad3f9df8190 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 2 Jun 2022 12:24:46 +0200 Subject: [PATCH 137/562] fix shellcheck --- tools/pipeline-runner/cloud-logging.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pipeline-runner/cloud-logging.sh b/tools/pipeline-runner/cloud-logging.sh index dd5734c26..c9854095c 100755 --- a/tools/pipeline-runner/cloud-logging.sh +++ b/tools/pipeline-runner/cloud-logging.sh @@ -25,7 +25,7 @@ cat | jq -Rsn --arg RUN_TYPE "$_RUN_TYPE" --arg BUILD_ID "$BUILD_ID" ' | map(.duration = (.duration | sub("s"; "") | tonumber? // 0)) ' > results.json -cat results.json | jq -r -c '.[]|.' | while read -r log; do +jq -r -c '.[]|.' < results.json | while read -r log; do if [ "$(echo "$log" | jq '.success')" = "true" ]; then SEVERITY=INFO else From c4e912f34cabb2dc327763a65a15a082ec1d5c2d Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 3 Jun 2022 17:48:10 +0200 Subject: [PATCH 138/562] bump quickstart 1.7.1 --- tools/hybrid-quickstart/README.md | 3 + .../hybrid-quickstart/destroy-runtime-gke.sh | 16 ++-- .../initialize-runtime-gke.sh | 3 - tools/hybrid-quickstart/steps.sh | 83 ++++++++++--------- 4 files changed, 58 insertions(+), 47 deletions(-) diff --git a/tools/hybrid-quickstart/README.md b/tools/hybrid-quickstart/README.md index e02b20861..73bfbdcf7 100644 --- a/tools/hybrid-quickstart/README.md +++ b/tools/hybrid-quickstart/README.md @@ -35,6 +35,9 @@ gcloud version #installed zip zip -v +#installed timeout +timeout --version + #login if needed gcloud auth list ``` diff --git a/tools/hybrid-quickstart/destroy-runtime-gke.sh b/tools/hybrid-quickstart/destroy-runtime-gke.sh index c3008f07d..69ea0a256 100755 --- a/tools/hybrid-quickstart/destroy-runtime-gke.sh +++ b/tools/hybrid-quickstart/destroy-runtime-gke.sh @@ -28,8 +28,10 @@ echo "🗑️ Delete Apigee hybrid cluster" yes | gcloud container clusters delete "$GKE_CLUSTER_NAME" --region "$REGION" -for persistent_disk in $(gcloud compute disks list --format="value(name)" --filter="name~^gke-"); do - gcloud compute disks delete "$persistent_disk" --zone="$ZONE" -q +gcloud compute disks list --format=json --filter="name~^gke-$GKE_CLUSTER_NAME" | jq -r -c '.[]' | while read -r disk; do + name=$(echo $disk | jq -r '.name') + diskzone=$(echo $disk | jq -r '.zone') + gcloud compute disks delete "$name" --zone="$diskzone" -q done for cluster in $(gcloud container hub memberships list --format="value(name)"); do @@ -40,8 +42,8 @@ echo "✅ Apigee hybrid cluster deleted" echo "🗑️ Clean up Networking" -gcloud compute addresses delete apigee-ingress-ip --region "$REGION" -q || echo "No regional IP address" -gcloud compute addresses delete apigee-ingress-ip --global -q || echo "No global IP address" +gcloud compute addresses delete "$INGRESS_IP_NAME" --region "$REGION" -q || echo "No regional IP address" +gcloud compute addresses delete "$INGRESS_IP_NAME" --global -q || echo "No global IP address" for target_pool in $(gcloud compute target-pools list --format="value(name)"); do gcloud compute target-pools delete "$target_pool" --region "$REGION" -q @@ -56,15 +58,15 @@ rm empty-file gcloud dns managed-zones delete apigee-dns-zone -q -for fwdrule in $(gcloud compute forwarding-rules list --format="value(name)" --filter="name~xlb-apigee-ingress"); do +for fwdrule in $(gcloud compute forwarding-rules list --format="value(name)" --filter="name~xlb-apigee-$ENV_GROUP_NAME"); do gcloud compute forwarding-rules delete --global "$fwdrule" -q done -for targetproxy in $(gcloud compute target-https-proxies list --format="value(name)" --filter="name~xlb-apigee-ingress"); do +for targetproxy in $(gcloud compute target-https-proxies list --format="value(name)" --filter="name~xlb-apigee-$ENV_GROUP_NAME"); do gcloud compute target-https-proxies delete "$targetproxy" -q done -for urlmap in $(gcloud compute url-maps list --format="value(name)" --filter="name~xlb-apigee-ingress"); do +for urlmap in $(gcloud compute url-maps list --format="value(name)" --filter="name~xlb-apigee-$ENV_GROUP_NAME"); do gcloud compute url-maps delete "$urlmap" -q done diff --git a/tools/hybrid-quickstart/initialize-runtime-gke.sh b/tools/hybrid-quickstart/initialize-runtime-gke.sh index 885653b9f..c15a31fe7 100755 --- a/tools/hybrid-quickstart/initialize-runtime-gke.sh +++ b/tools/hybrid-quickstart/initialize-runtime-gke.sh @@ -19,9 +19,6 @@ set -e QUICKSTART_ROOT="$( cd "$(dirname "$0")" || exit >/dev/null 2>&1 ; pwd -P )" export QUICKSTART_ROOT -ENV_NAME=${ENV_NAME:="test1"} -ENV_GROUP_NAME=${ENV_GROUP_NAME:="test"} - source "$QUICKSTART_ROOT/steps.sh" # enables all required GCP APIs diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index bc5ab3378..708349725 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -29,13 +29,13 @@ set_config_params() { export REGION=${REGION:-'europe-west1'} gcloud config set compute/region "$REGION" - export ZONE=${ZONE:-'europe-west1-c'} - gcloud config set compute/zone "$ZONE" + export ZONE=${ZONE:-'europe-west1-b,europe-west1-c,europe-west1-d'} echo "- Compute Location $REGION/$ZONE" export NETWORK=${NETWORK:-'apigee-hybrid'} export SUBNET=${SUBNET:-"apigee-$REGION"} - echo "- Network $NETWORK/$SUBNET" + export SUBNET_RANGE=${SUBNET_RANGE:-"10.200.0.0/20"} + echo "- Network $NETWORK/$SUBNET - $SUBNET_RANGE" export PRIVATE_CLUSTER=${PRIVATE_CLUSTER:-'true'} echo "- Private Cluster $PRIVATE_CLUSTER" @@ -45,6 +45,12 @@ set_config_params() { printf "\n🔧 Apigee hybrid Configuration:\n" + export ENV_NAME=${ENV_NAME:="test1"} + echo "- Environment Name $ENV_NAME" + export ENV_GROUP_NAME=${ENV_GROUP_NAME:="test"} + echo "- Environment Group Name $ENV_GROUP_NAME" + export INGRESS_IP_NAME=${INGRESS_IP_NAME:-'ingress-ip'} # internal|external + echo "- Ingress address name $INGRESS_IP_NAME" export INGRESS_TYPE=${INGRESS_TYPE:-'external'} # internal|external echo "- Ingress type $INGRESS_TYPE" export CERT_TYPE=${CERT_TYPE:-google-managed} @@ -58,7 +64,7 @@ set_config_params() { export GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME:-apigee-hybrid} export GKE_CLUSTER_MACHINE_TYPE=${GKE_CLUSTER_MACHINE_TYPE:-e2-standard-4} echo "- GKE Node Type $GKE_CLUSTER_MACHINE_TYPE" - export APIGEE_HYBRID_VERSION='1.7.0' + export APIGEE_HYBRID_VERSION='1.7.1' echo "- Apigee hybrid version $APIGEE_HYBRID_VERSION" export KPT_VERSION='v0.34.0' echo "- kpt version $KPT_VERSION" @@ -79,6 +85,10 @@ set_config_params() { export APIGEE_CTL='apigeectl_mac_64.tar.gz' export JQ_VERSION='jq-1.6/jq-osx-amd64' export KPT_BINARY='kpt_darwin_amd64-0.34.0.tar.gz' + if ! [ -x "$(command -v timeout)" ]; then + echo "Please install the timeouty command for macOS. E.g. 'brew install coreutils'" + exit 2 + fi else echo "💣 Only Linux and macOS are supported at this time. You seem to be running on $OS_NAME." exit 2 @@ -95,7 +105,8 @@ set_config_params() { echo "- Mesh ID $MESH_ID" # these will be set if the steps are run in order - INGRESS_IP=$(gcloud compute addresses list --format json --filter "name=apigee-ingress-ip" --format="get(address)" || echo "") + + INGRESS_IP=$(gcloud compute addresses list --format json --filter "name=$INGRESS_IP_NAME" --format="get(address)" || echo "") export INGRESS_IP echo "- Ingress IP ${INGRESS_IP:-N/A}" NAME_SERVER=$(gcloud dns managed-zones describe apigee-dns-zone --format="json" --format="get(nameServers[0])" 2>/dev/null || echo "") @@ -311,27 +322,27 @@ configure_network() { fi if [ -z "$(gcloud compute networks subnets list --network "$NETWORK" --format json --filter "name=$SUBNET" --format='get(name)')" ]; then - gcloud compute networks subnets create "$SUBNET" --network "$NETWORK" --range "10.200.0.0/20" --region "$REGION" + gcloud compute networks subnets create "$SUBNET" --network "$NETWORK" --range "$SUBNET_RANGE" --region "$REGION" fi - if [ -z "$(gcloud compute routers list --format json --filter "name=apigee-router" --format='get(name)')" ]; then - gcloud compute routers create apigee-router --network "$NETWORK" + if [ -z "$(gcloud compute routers list --format json --filter "name=rt-$REGION" --format='get(name)')" ]; then + gcloud compute routers create "rt-$REGION" --network "$NETWORK" fi - if [ -z "$(gcloud compute routers nats list --router apigee-router --format json --format='get(name)')" ]; then - gcloud compute routers nats create apigee-nat --router apigee-router --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges + if [ -z "$(gcloud compute routers nats list --router "rt-$REGION" --format json --format='get(name)')" ]; then + gcloud compute routers nats create "apigee-nat-$REGION" --router "rt-$REGION" --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges fi - if [ -z "$(gcloud compute addresses list --format json --filter 'name=apigee-ingress-ip' --format='get(address)')" ]; then + if [ -z "$(gcloud compute addresses list --format json --filter "name=$INGRESS_IP_NAME" --format='get(address)')" ]; then if [[ "$INGRESS_TYPE" == "external" && "$CERT_TYPE" == "google-managed" ]]; then - gcloud compute addresses create apigee-ingress-ip --global + gcloud compute addresses create "$INGRESS_IP_NAME" --global elif [[ "$INGRESS_TYPE" == "external" && "$CERT_TYPE" == "self-signed" ]]; then - gcloud compute addresses create apigee-ingress-ip --region "$REGION" + gcloud compute addresses create "$INGRESS_IP_NAME" --region "$REGION" else - gcloud compute addresses create apigee-ingress-ip --region "$REGION" --subnet "$SUBNET" --purpose SHARED_LOADBALANCER_VIP + gcloud compute addresses create "$INGRESS_IP_NAME" --region "$REGION" --subnet "$SUBNET" --purpose SHARED_LOADBALANCER_VIP fi fi - INGRESS_IP=$(gcloud compute addresses list --format json --filter "name=apigee-ingress-ip" --format="get(address)") + INGRESS_IP=$(gcloud compute addresses list --format json --filter "name=$INGRESS_IP_NAME" --format="get(address)") export INGRESS_IP export DNS_NAME=${DNS_NAME:="$(echo "$INGRESS_IP" | tr '.' '-').nip.io"} @@ -372,8 +383,8 @@ create_gke_cluster() { if [ -z "$(gcloud container clusters list --filter "name=$GKE_CLUSTER_NAME" --format='get(name)')" ]; then if [ "$PRIVATE_CLUSTER" = "true" ];then - if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-webhook" --format='get(name)')" ]; then - gcloud compute firewall-rules create allow-master-webhook --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" + if [ -z "$(gcloud compute firewall-rules list --format json --filter "name=allow-master-$GKE_CLUSTER_NAME" --format='get(name)')" ]; then + gcloud compute firewall-rules create "allow-master-$GKE_CLUSTER_NAME" --allow tcp:9443,tcp:15017 --target-tags hybrid-quickstart --network "$NETWORK" --source-ranges "$CONTROL_PLANE_CIDR" fi gcloud container clusters create "$GKE_CLUSTER_NAME" \ --no-enable-master-authorized-networks \ @@ -392,10 +403,10 @@ create_gke_cluster() { --default-max-pods-per-node "110" \ --enable-ip-alias \ --machine-type "$GKE_CLUSTER_MACHINE_TYPE" \ - --num-nodes "4" \ + --num-nodes "1" \ --enable-autoscaling \ - --min-nodes "3" \ - --max-nodes "6" \ + --min-nodes "1" \ + --max-nodes "3" \ --tags=hybrid-quickstart \ --labels mesh_id="$MESH_ID" \ --workload-pool "$WORKLOAD_POOL" \ @@ -416,10 +427,10 @@ create_gke_cluster() { --default-max-pods-per-node "110" \ --enable-ip-alias \ --machine-type "$GKE_CLUSTER_MACHINE_TYPE" \ - --num-nodes "4" \ + --num-nodes "1" \ --enable-autoscaling \ - --min-nodes "3" \ - --max-nodes "6" \ + --min-nodes "1" \ + --max-nodes "3" \ --tags=hybrid-quickstart \ --labels mesh_id="$MESH_ID" \ --workload-pool "$WORKLOAD_POOL" \ @@ -604,7 +615,7 @@ create_cert() { apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: - name: apigee-xlb-cert + name: "apigee-cert-$ENV_GROUP_NAME" namespace: istio-system spec: domains: @@ -627,10 +638,10 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: - networking.gke.io/managed-certificates: "apigee-xlb-cert" - kubernetes.io/ingress.global-static-ip-name: apigee-ingress-ip + networking.gke.io/managed-certificates: "apigee-cert-$ENV_GROUP_NAME" + kubernetes.io/ingress.global-static-ip-name: $INGRESS_IP_NAME kubernetes.io/ingress.allow-http: "false" - name: xlb-apigee-ingress + name: xlb-apigee-$ENV_GROUP_NAME namespace: istio-system spec: defaultBackend: @@ -742,7 +753,7 @@ configure_runtime() { cat << EOF > "$HYBRID_HOME"/overrides/overrides.yaml gcp: projectID: $PROJECT_ID - region: "$REGION" # Analytics Region + region: "$AX_REGION" # Analytics Region workloadIdentityEnabled: true # Apigee org name. org: $PROJECT_ID @@ -773,7 +784,7 @@ apigeectl_init() { apigeectl_apply() { echo -n "🏃 Running apigeectl apply" - timeout 5m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' + timeout 300 bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' "$APIGEECTL_HOME"/apigeectl apply -f "$HYBRID_HOME"/overrides/overrides.yaml --print-yaml > "$HYBRID_HOME"/generated/apigee-runtime.yaml } @@ -786,18 +797,16 @@ install_runtime() { timeout 20m bash -c 'until apigeectl_init; do sleep 30; done' echo -n "⏳ Waiting for Apigeectl init " - timeout 10m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' - timeout 10m bash -c 'until kubectl wait --for=condition=ready --timeout 60s issuer apigee-selfsigned-issuer -n apigee-system; do sleep 10; done' - timeout 10m bash -c 'until kubectl wait --for=condition=ready --timeout 60s certificate apigee-serving-cert -n apigee-system; do sleep 10; done' - timeout 10m bash -c 'until kubectl wait --for=condition=complete --timeout 60s job/apigee-resources-install -n apigee-system; do sleep 10; done' - - echo -n "⏳ Waiting for Serving Cert " + timeout 600 bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' + timeout 600 bash -c 'until kubectl wait --for=condition=ready --timeout 60s issuer apigee-selfsigned-issuer -n apigee-system; do sleep 10; done' + timeout 600 bash -c 'until kubectl wait --for=condition=ready --timeout 60s certificate apigee-serving-cert -n apigee-system; do sleep 10; done' + timeout 600 bash -c 'until kubectl wait --for=condition=complete --timeout 60s job/apigee-resources-install -n apigee-system; do sleep 10; done' export -f apigeectl_apply - timeout 12m bash -c 'until apigeectl_apply; do sleep 20; done' + timeout 720 bash -c 'until apigeectl_apply; do sleep 20; done' echo -n "⏳ Waiting for Apigeectl apply " - timeout 30m bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-runtime -n apigee; do sleep 10; done' + timeout 1800 bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-runtime -n apigee; do sleep 10; done' popd || return echo "🎉🎉🎉 Hybrid installation completed!" From e869266e32e37fddb167509edd3e49ec5a95fe25 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 8 Jun 2022 14:37:28 +0200 Subject: [PATCH 139/562] hybird cleanup for network resources --- tools/hybrid-quickstart/destroy-runtime-gke.sh | 15 +++++++++++---- tools/hybrid-quickstart/steps.sh | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/hybrid-quickstart/destroy-runtime-gke.sh b/tools/hybrid-quickstart/destroy-runtime-gke.sh index 69ea0a256..3a06eda9a 100755 --- a/tools/hybrid-quickstart/destroy-runtime-gke.sh +++ b/tools/hybrid-quickstart/destroy-runtime-gke.sh @@ -28,10 +28,10 @@ echo "🗑️ Delete Apigee hybrid cluster" yes | gcloud container clusters delete "$GKE_CLUSTER_NAME" --region "$REGION" -gcloud compute disks list --format=json --filter="name~^gke-$GKE_CLUSTER_NAME" | jq -r -c '.[]' | while read -r disk; do - name=$(echo $disk | jq -r '.name') - diskzone=$(echo $disk | jq -r '.zone') - gcloud compute disks delete "$name" --zone="$diskzone" -q +for disk_zone in $(echo "$ZONE" | tr "," " "); do + for persistent_disk in $(gcloud compute disks list --format="value(name)" --filter="name~^gke-"); do + gcloud compute disks delete "$persistent_disk" --zone="$disk_zone" -q || echo "disk not in $disk_zone" + done done for cluster in $(gcloud container hub memberships list --format="value(name)"); do @@ -78,6 +78,13 @@ for mcrt in $(gcloud compute ssl-certificates list --format="value(name)" --filt gcloud compute ssl-certificates delete "$mcrt" -q done +if [ -n "$(gcloud compute routers nats list --region "$REGION" --router "rt-$REGION" --format json --format='get(name)')" ]; then + gcloud compute routers nats delete "apigee-nat-$REGION" --router "rt-$REGION" +fi + +if [ -n "$(gcloud compute routers list --format json --filter "name=rt-$REGION" --format='get(name)')" ]; then + gcloud compute routers delete "rt-$REGION" --network "$NETWORK" +fi echo "✅ Apigee networking cleaned up" diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 708349725..559e8f2fb 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -330,7 +330,7 @@ configure_network() { fi if [ -z "$(gcloud compute routers nats list --router "rt-$REGION" --format json --format='get(name)')" ]; then - gcloud compute routers nats create "apigee-nat-$REGION" --router "rt-$REGION" --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges + gcloud compute routers nats create "apigee-nat-$REGION" --router "rt-$REGION" --region "$REGION" --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges fi if [ -z "$(gcloud compute addresses list --format json --filter "name=$INGRESS_IP_NAME" --format='get(address)')" ]; then From bcee6ff570210ae53d8fd555650723e517f569fa Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 8 Jun 2022 14:49:47 +0200 Subject: [PATCH 140/562] shellckeck fixes --- .../initialize-runtime-gke.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/hybrid-quickstart/initialize-runtime-gke.sh b/tools/hybrid-quickstart/initialize-runtime-gke.sh index c15a31fe7..a1ba8a831 100755 --- a/tools/hybrid-quickstart/initialize-runtime-gke.sh +++ b/tools/hybrid-quickstart/initialize-runtime-gke.sh @@ -34,16 +34,16 @@ ask_confirm create_apigee_org # create an Apigee environment -create_apigee_env $ENV_NAME +create_apigee_env "$ENV_NAME" # create an Apigee environment group -create_apigee_envgroup $ENV_GROUP_NAME +create_apigee_envgroup "$ENV_GROUP_NAME" # attach an Apigee environment to an environment group -add_env_to_envgroup $ENV_NAME $ENV_GROUP_NAME +add_env_to_envgroup "$ENV_NAME" "$ENV_GROUP_NAME" # configure an ingress IP and DNS entry for the env group hostname -configure_network $ENV_GROUP_NAME +configure_network "$ENV_GROUP_NAME" # create a minimal GKE cluster with a single node pool create_gke_cluster @@ -61,19 +61,19 @@ download_apigee_ctl prepare_resources # create certificate for env group hostname -create_cert $ENV_GROUP_NAME +create_cert "$ENV_GROUP_NAME" # # create all required service accounts and prepare workload identities create_sa # configure the Apigee runtime -configure_runtime $ENV_NAME $ENV_GROUP_NAME +configure_runtime "$ENV_NAME" "$ENV_GROUP_NAME" # install the Apigee runtime -install_runtime $ENV_NAME $ENV_GROUP_NAME +install_runtime "$ENV_NAME" "$ENV_GROUP_NAME" # enable distributed trace -enable_trace $ENV_NAME +enable_trace "$ENV_NAME" # deploy an example proxy to the given environment -deploy_example_proxy $ENV_NAME $ENV_GROUP_NAME +deploy_example_proxy "$ENV_NAME" "$ENV_GROUP_NAME" From 444ab93fe27fddaf19d3b8b649e070d89207af91 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 8 Jun 2022 14:54:52 +0200 Subject: [PATCH 141/562] document multi-zone cluster in readme --- tools/hybrid-quickstart/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/README.md b/tools/hybrid-quickstart/README.md index 73bfbdcf7..5848edc8c 100644 --- a/tools/hybrid-quickstart/README.md +++ b/tools/hybrid-quickstart/README.md @@ -72,7 +72,7 @@ export AX_REGION='europe-west1' ```sh export REGION='europe-west1' -export ZONE='europe-west1-c' +export ZONE='europe-west1-b,europe-west1-c,europe-west1-d' ``` ### Networking From 6f5fa28dd7b058100e562423da60d79ed59db7c6 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 8 Jun 2022 14:58:48 +0200 Subject: [PATCH 142/562] delete network resources quietly --- tools/hybrid-quickstart/destroy-runtime-gke.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/hybrid-quickstart/destroy-runtime-gke.sh b/tools/hybrid-quickstart/destroy-runtime-gke.sh index 3a06eda9a..45af6adde 100755 --- a/tools/hybrid-quickstart/destroy-runtime-gke.sh +++ b/tools/hybrid-quickstart/destroy-runtime-gke.sh @@ -79,11 +79,11 @@ for mcrt in $(gcloud compute ssl-certificates list --format="value(name)" --filt done if [ -n "$(gcloud compute routers nats list --region "$REGION" --router "rt-$REGION" --format json --format='get(name)')" ]; then - gcloud compute routers nats delete "apigee-nat-$REGION" --router "rt-$REGION" + gcloud compute routers nats delete "apigee-nat-$REGION" --router "rt-$REGION" -q fi if [ -n "$(gcloud compute routers list --format json --filter "name=rt-$REGION" --format='get(name)')" ]; then - gcloud compute routers delete "rt-$REGION" --network "$NETWORK" + gcloud compute routers delete "rt-$REGION" -q fi echo "✅ Apigee networking cleaned up" From 665cf587f8c854b7ccaa5edaf66c20942566e292 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 10 Jun 2022 11:17:33 +0200 Subject: [PATCH 143/562] Cleanup pipeline runner instructions --- .eslintrc.yml | 1 - PIPELINES.md | 30 +- package-lock.json | 4421 ------------------------ package.json | 26 - references/cicd-pipeline/.eslintrc.yml | 1 - references/cicd-pipeline/package.json | 1 - 6 files changed, 28 insertions(+), 4452 deletions(-) delete mode 100644 package-lock.json delete mode 100644 package.json diff --git a/.eslintrc.yml b/.eslintrc.yml index 9dffe58fe..3692366ae 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -16,7 +16,6 @@ env: node: true es6: true extends: - - google - prettier parserOptions: ecmaVersion: 8 diff --git a/PIPELINES.md b/PIPELINES.md index eb8bd32e1..9a7e90bc1 100644 --- a/PIPELINES.md +++ b/PIPELINES.md @@ -10,11 +10,37 @@ The `pipeline.sh` script: - is run whenever a Pull Request changes that project - is run for all projects each night - is run on a private continuous integration server after an initial code - review + review - has access to an Apigee Edge organization, accessed with the variables below. - runs in a Docker container that you can see [here](./tools/pipeline-runner/Dockerfile). - You can run a pipeline locally e.g. `npm run pipeline -- references/js-callout` + + You can run a pipeline locally: + + ```sh + docker run \ + -v $(pwd):/home \ + -e APIGEE_USER -e APIGEE_PASS -e APIGEE_ORG -e APIGEE_ENV \ + -e APIGEE_X_ORG -e APIGEE_X_ENV -e APIGEE_X_HOSTNAME \ + -v ~/.config:/root/.config \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -it ghcr.io/apigee/devrel-pipeline-runner:latest run-pipelines.sh references/js-callout + ``` + + Where: + - The `APIGEE_` variables point to your Apigee instance + - This repo is mounted in the home directory + - (Required for X) mount your gcloud config folder + - (Required for Docker-in-Docker pipelines) mount the docker socket + - Specify a reference e.g. `references/js-callout` or omit to run everything + + Should you need to make changes to the pipeline runner, you can + build your own image by running the following command and replacing + the image reference above: + + ```sh + docker build -t devrel-pipeline-runner:local ./tools/pipeline-runner + ``` A simple example of a pipeline can be found [here](./references/js-callout/pipeline.sh) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 545b77772..000000000 --- a/package-lock.json +++ /dev/null @@ -1,4421 +0,0 @@ -{ - "name": "apigee-devrel", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "apigee-devrel", - "license": "Apache-2.0", - "dependencies": { - "eslint": "^7.0.0", - "eslint-config-google": "^0.14.0", - "eslint-config-prettier": "^6.11.0", - "prettier": "^2.0.5", - "remark-cli": "^9.0.0", - "remark-lint": "^7.0.0", - "remark-lint-maximum-line-length": "^2.0.3", - "remark-preset-lint-recommended": "^4.0.0", - "remark-preset-prettier": "^0.4.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==" - }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/co": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" - }, - "node_modules/collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-config-prettier": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", - "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", - "dependencies": { - "get-stdin": "^6.0.0" - }, - "bin": { - "eslint-config-prettier-check": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=3.14.1" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "node_modules/fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==" - }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-empty": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", - "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libnpmconfig": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", - "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", - "dependencies": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "node_modules/load-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-3.0.0.tgz", - "integrity": "sha512-od7eKCCZ62ITvFf8nHHrIiYmgOHb4xVNDRDqxBWSaao5FZyyZVX8OmRCbwjDGPrSrgIulwPNyBsWCGnhiDC0oQ==", - "dependencies": { - "libnpmconfig": "^1.0.0", - "resolve-from": "^5.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/load-plugin/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdast-comment-marker": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.2.tgz", - "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-heading-style": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.6.tgz", - "integrity": "sha512-8ZuuegRqS0KESgjAGW8zTx4tJ3VNIiIaGFNEzFpRSAQBavVc7AvOo9I4g3crcZBfYisHs4seYh0rAVimO6HyOw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-cli": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-9.0.0.tgz", - "integrity": "sha512-y6kCXdwZoMoh0Wo4Och1tDW50PmMc86gW6GpF08v9d+xUCEJE2wwXdQ+TnTaUamRnfFdU+fE+eNf2PJ53cyq8g==", - "dependencies": { - "markdown-extensions": "^1.1.0", - "remark": "^13.0.0", - "unified-args": "^8.0.0" - }, - "bin": { - "remark": "cli.js" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-7.0.1.tgz", - "integrity": "sha512-caZXo3qhuBxzvq9JSJFVQ/ERDq/6TJVgWn0KDwKOIJCGOuLXfQhby5XttUq+Rn7kLbNMtvwfWHJlte14LpaeXQ==", - "dependencies": { - "remark-message-control": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-final-newline": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-1.0.5.tgz", - "integrity": "sha512-rfLlW8+Fz2dqnaEgU4JwLA55CQF1T4mfSs/GwkkeUCGPenvEYwSkCN2KO2Gr1dy8qPoOdTFE1rSufLjmeTW5HA==", - "dependencies": { - "unified-lint-rule": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-hard-break-spaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-2.0.1.tgz", - "integrity": "sha512-Qfn/BMQFamHhtbfLrL8Co/dbYJFLRL4PGVXZ5wumkUO5f9FkZC2RsV+MD9lisvGTkJK0ZEJrVVeaPbUIFM0OAw==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-list-item-bullet-indent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-2.0.1.tgz", - "integrity": "sha512-tozDt9LChG1CvYJnBQH/oh45vNcHYBvg79ogvV0f8MtE/K0CXsM8EpfQ6pImFUdHpBV1op6aF6zPMrB0AkRhcQ==", - "dependencies": { - "pluralize": "^8.0.0", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-list-item-indent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-2.0.1.tgz", - "integrity": "sha512-4IKbA9GA14Q9PzKSQI6KEHU/UGO36CSQEjaDIhmb9UOhyhuzz4vWhnSIsxyI73n9nl9GGRAMNUSGzr4pQUFwTA==", - "dependencies": { - "pluralize": "^8.0.0", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-maximum-line-length": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-2.0.3.tgz", - "integrity": "sha512-zyWHBFh1oPAy+gkaVFXiTHYP2WwriIeBtaarDqkweytw0+qmuikjVMJTWbQ3+XfYBreD7KKDM9SI79nkp0/IZQ==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-auto-link-without-protocol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-2.0.1.tgz", - "integrity": "sha512-TFcXxzucsfBb/5uMqGF1rQA+WJJqm1ZlYQXyvJEXigEZ8EAxsxZGPb/gOQARHl/y0vymAuYxMTaChavPKaBqpQ==", - "dependencies": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-auto-link-without-protocol/node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-blockquote-without-marker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-3.0.1.tgz", - "integrity": "sha512-sM953+u0zN90SGd2V5hWcFbacbpaROUslS5Q5F7/aa66/2rAwh6zVnrXc4pf7fFOpj7I9Xa8Aw+uB+3RJWwdrQ==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile-location": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-duplicate-definitions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-2.0.1.tgz", - "integrity": "sha512-XL22benJZB01m+aOse91nsu1IMFqeWJWme9QvoJuxIcBROO1BG1VoqLOkwNcawE/M/0CkvTo5rfx0eMlcnXOIw==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-stringify-position": "^2.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-heading-content-indent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-2.0.1.tgz", - "integrity": "sha512-Jp0zCykGwg13z7XU4VuoFK7DN8bVZ1u3Oqu3hqECsH6LMASb0tW4zcTIc985kcVo3OQTRyb6KLQXL2ltOvppKA==", - "dependencies": { - "mdast-util-heading-style": "^1.0.2", - "pluralize": "^8.0.0", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-inline-padding": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-2.0.1.tgz", - "integrity": "sha512-a36UlPvRrLCgxjjG3YZA9VCDvLBcoBtGNyM04VeCPz+d9hHe+5Fs1C/jL+DRLCH7nff90jJ5C/9b8/LTwhjaWA==", - "dependencies": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-inline-padding/node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-literal-urls": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-2.0.1.tgz", - "integrity": "sha512-IDdKtWOMuKVQIlb1CnsgBoyoTcXU3LppelDFAIZePbRPySVHklTtuK57kacgU5grc7gPM04bZV96eliGrRU7Iw==", - "dependencies": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-literal-urls/node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-shortcut-reference-image": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-2.0.1.tgz", - "integrity": "sha512-2jcZBdnN6ecP7u87gkOVFrvICLXIU5OsdWbo160FvS/2v3qqqwF2e/n/e7D9Jd+KTq1mR1gEVVuTqkWWuh3cig==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-shortcut-reference-link": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-2.0.1.tgz", - "integrity": "sha512-pTZbslG412rrwwGQkIboA8wpBvcjmGFmvugIA+UQR+GfFysKtJ5OZMPGJ98/9CYWjw9Z5m0/EktplZ5TjFjqwA==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-undefined-references": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-2.0.1.tgz", - "integrity": "sha512-tXM2ctFnduC3QcskrIePUajcjtNtBmo2dvlj4aoQJtQy09Soav/rYngb8u/SgERc6Irdmm5s55UAwR9CcSrzVg==", - "dependencies": { - "collapse-white-space": "^1.0.4", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-unused-definitions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-2.0.1.tgz", - "integrity": "sha512-+BMc0BOjc364SvKYLkspmxDch8OaKPbnUGgQBvK0Bmlwy42baR4C9zhwAWBxm0SBy5Z4AyM4G4jKpLXPH40Oxg==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-ordered-list-marker-style": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-2.0.1.tgz", - "integrity": "sha512-Cnpw1Dn9CHn+wBjlyf4qhPciiJroFOEGmyfX008sQ8uGoPZsoBVIJx76usnHklojSONbpjEDcJCjnOvfAcWW1A==", - "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-message-control": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-6.0.0.tgz", - "integrity": "sha512-k9bt7BYc3G7YBdmeAhvd3VavrPa/XlKWR3CyHjr4sLO9xJyly8WHHT3Sp+8HPR8lEUv+/sZaffL7IjMLV0f6BA==", - "dependencies": { - "mdast-comment-marker": "^1.0.0", - "unified-message-control": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-preset-lint-recommended": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-4.0.1.tgz", - "integrity": "sha512-zn+ImQbOVcAQVWLL0R0rFQ2Wy8JyWnuU3mJ8Zh0EVOckglcxByssvTbKqPih3Lh8ogpE38EfnC3a/vshj4Jx6A==", - "dependencies": { - "remark-lint": "^7.0.0", - "remark-lint-final-newline": "^1.0.0", - "remark-lint-hard-break-spaces": "^2.0.0", - "remark-lint-list-item-bullet-indent": "^2.0.0", - "remark-lint-list-item-indent": "^2.0.0", - "remark-lint-no-auto-link-without-protocol": "^2.0.0", - "remark-lint-no-blockquote-without-marker": "^3.0.0", - "remark-lint-no-duplicate-definitions": "^2.0.0", - "remark-lint-no-heading-content-indent": "^2.0.0", - "remark-lint-no-inline-padding": "^2.0.0", - "remark-lint-no-literal-urls": "^2.0.0", - "remark-lint-no-shortcut-reference-image": "^2.0.0", - "remark-lint-no-shortcut-reference-link": "^2.0.0", - "remark-lint-no-undefined-references": "^2.0.0", - "remark-lint-no-unused-definitions": "^2.0.0", - "remark-lint-ordered-list-marker-style": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-preset-prettier": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/remark-preset-prettier/-/remark-preset-prettier-0.4.1.tgz", - "integrity": "sha512-m+yzI9LN/dkVq/HUYR3aEAjvDBO4hZMwgq245RBYUzSKXZPboMTlxBTgBuK7Tcw5CKJphjoL31slQQcDu1KGZQ==", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "prettier": ">=1.0.0" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-vfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz", - "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==", - "dependencies": { - "is-buffer": "^2.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-args": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-8.1.0.tgz", - "integrity": "sha512-t1HPS1cQPsVvt/6EtyWIbQGurza5684WGRigNghZRvzIdHm3LPgMdXPyGx0npORKzdiy5+urkF0rF5SXM8lBuQ==", - "dependencies": { - "camelcase": "^5.0.0", - "chalk": "^3.0.0", - "chokidar": "^3.0.0", - "fault": "^1.0.2", - "json5": "^2.0.0", - "minimist": "^1.2.0", - "text-table": "^0.2.0", - "unified-engine": "^8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-args/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/unified-engine": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-8.2.0.tgz", - "integrity": "sha512-ZlMm62ejrf+tJHdyOjQfljszngQjRor95q2XZMGk6rpJUYi7ZIHY/EXEhOcj9PZkMKKdLIM+dqL4s0ceyk9wbA==", - "dependencies": { - "concat-stream": "^2.0.0", - "debug": "^4.0.0", - "fault": "^1.0.0", - "figures": "^3.0.0", - "glob": "^7.0.3", - "ignore": "^5.0.0", - "is-buffer": "^2.0.0", - "is-empty": "^1.0.0", - "is-plain-obj": "^2.0.0", - "js-yaml": "^3.6.1", - "load-plugin": "^3.0.0", - "parse-json": "^5.0.0", - "to-vfile": "^6.0.0", - "trough": "^1.0.0", - "unist-util-inspect": "^5.0.0", - "vfile-reporter": "^6.0.0", - "vfile-statistics": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-engine/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", - "dependencies": { - "wrapped": "^1.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-message-control": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.3.tgz", - "integrity": "sha512-oY5z2n8ugjpNHXOmcgrw0pQeJzavHS0VjPBP21tOcm7rc2C+5Q+kW9j5+gqtf8vfW/8sabbsK5+P+9QPwwEHDA==", - "dependencies": { - "unist-util-visit": "^2.0.0", - "vfile-location": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-inspect": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-5.0.1.tgz", - "integrity": "sha512-fPNWewS593JSmg49HbnE86BJKuBi1/nMWhDSccBvbARfxezEuJV85EaARR9/VplveiwCoLm2kWq+DhP8TBaDpw==", - "dependencies": { - "is-empty": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-reporter": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.2.tgz", - "integrity": "sha512-GN2bH2gs4eLnw/4jPSgfBjo+XCuvnX9elHICJZjVD4+NM0nsUrMTvdjGY5Sc/XG69XVTgLwj7hknQVc6M9FukA==", - "dependencies": { - "repeat-string": "^1.5.0", - "string-width": "^4.0.0", - "supports-color": "^6.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-sort": "^2.1.2", - "vfile-statistics": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-reporter/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/vfile-reporter/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/vfile-sort": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.2.tgz", - "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-statistics": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.4.tgz", - "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrapped": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", - "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", - "dependencies": { - "co": "3.1.0", - "sliced": "^1.0.1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==" - }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "co": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" - }, - "collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "requires": {} - }, - "eslint-config-prettier": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", - "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", - "requires": { - "get-stdin": "^6.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "requires": { - "format": "^0.2.0" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==" - }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==" - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - }, - "is-empty": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", - "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "libnpmconfig": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", - "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", - "requires": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "load-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-3.0.0.tgz", - "integrity": "sha512-od7eKCCZ62ITvFf8nHHrIiYmgOHb4xVNDRDqxBWSaao5FZyyZVX8OmRCbwjDGPrSrgIulwPNyBsWCGnhiDC0oQ==", - "requires": { - "libnpmconfig": "^1.0.0", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - }, - "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==" - }, - "mdast-comment-marker": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.2.tgz", - "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==" - }, - "mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "mdast-util-heading-style": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.6.tgz", - "integrity": "sha512-8ZuuegRqS0KESgjAGW8zTx4tJ3VNIiIaGFNEzFpRSAQBavVc7AvOo9I4g3crcZBfYisHs4seYh0rAVimO6HyOw==" - }, - "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - }, - "micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, - "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - }, - "remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "requires": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - } - }, - "remark-cli": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-9.0.0.tgz", - "integrity": "sha512-y6kCXdwZoMoh0Wo4Och1tDW50PmMc86gW6GpF08v9d+xUCEJE2wwXdQ+TnTaUamRnfFdU+fE+eNf2PJ53cyq8g==", - "requires": { - "markdown-extensions": "^1.1.0", - "remark": "^13.0.0", - "unified-args": "^8.0.0" - } - }, - "remark-lint": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-7.0.1.tgz", - "integrity": "sha512-caZXo3qhuBxzvq9JSJFVQ/ERDq/6TJVgWn0KDwKOIJCGOuLXfQhby5XttUq+Rn7kLbNMtvwfWHJlte14LpaeXQ==", - "requires": { - "remark-message-control": "^6.0.0" - } - }, - "remark-lint-final-newline": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-1.0.5.tgz", - "integrity": "sha512-rfLlW8+Fz2dqnaEgU4JwLA55CQF1T4mfSs/GwkkeUCGPenvEYwSkCN2KO2Gr1dy8qPoOdTFE1rSufLjmeTW5HA==", - "requires": { - "unified-lint-rule": "^1.0.0" - } - }, - "remark-lint-hard-break-spaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-2.0.1.tgz", - "integrity": "sha512-Qfn/BMQFamHhtbfLrL8Co/dbYJFLRL4PGVXZ5wumkUO5f9FkZC2RsV+MD9lisvGTkJK0ZEJrVVeaPbUIFM0OAw==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-list-item-bullet-indent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-2.0.1.tgz", - "integrity": "sha512-tozDt9LChG1CvYJnBQH/oh45vNcHYBvg79ogvV0f8MtE/K0CXsM8EpfQ6pImFUdHpBV1op6aF6zPMrB0AkRhcQ==", - "requires": { - "pluralize": "^8.0.0", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-list-item-indent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-2.0.1.tgz", - "integrity": "sha512-4IKbA9GA14Q9PzKSQI6KEHU/UGO36CSQEjaDIhmb9UOhyhuzz4vWhnSIsxyI73n9nl9GGRAMNUSGzr4pQUFwTA==", - "requires": { - "pluralize": "^8.0.0", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-maximum-line-length": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-2.0.3.tgz", - "integrity": "sha512-zyWHBFh1oPAy+gkaVFXiTHYP2WwriIeBtaarDqkweytw0+qmuikjVMJTWbQ3+XfYBreD7KKDM9SI79nkp0/IZQ==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-no-auto-link-without-protocol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-2.0.1.tgz", - "integrity": "sha512-TFcXxzucsfBb/5uMqGF1rQA+WJJqm1ZlYQXyvJEXigEZ8EAxsxZGPb/gOQARHl/y0vymAuYxMTaChavPKaBqpQ==", - "requires": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" - } - } - }, - "remark-lint-no-blockquote-without-marker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-3.0.1.tgz", - "integrity": "sha512-sM953+u0zN90SGd2V5hWcFbacbpaROUslS5Q5F7/aa66/2rAwh6zVnrXc4pf7fFOpj7I9Xa8Aw+uB+3RJWwdrQ==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile-location": "^3.0.0" - } - }, - "remark-lint-no-duplicate-definitions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-2.0.1.tgz", - "integrity": "sha512-XL22benJZB01m+aOse91nsu1IMFqeWJWme9QvoJuxIcBROO1BG1VoqLOkwNcawE/M/0CkvTo5rfx0eMlcnXOIw==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-stringify-position": "^2.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-no-heading-content-indent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-2.0.1.tgz", - "integrity": "sha512-Jp0zCykGwg13z7XU4VuoFK7DN8bVZ1u3Oqu3hqECsH6LMASb0tW4zcTIc985kcVo3OQTRyb6KLQXL2ltOvppKA==", - "requires": { - "mdast-util-heading-style": "^1.0.2", - "pluralize": "^8.0.0", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-no-inline-padding": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-2.0.1.tgz", - "integrity": "sha512-a36UlPvRrLCgxjjG3YZA9VCDvLBcoBtGNyM04VeCPz+d9hHe+5Fs1C/jL+DRLCH7nff90jJ5C/9b8/LTwhjaWA==", - "requires": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" - } - } - }, - "remark-lint-no-literal-urls": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-2.0.1.tgz", - "integrity": "sha512-IDdKtWOMuKVQIlb1CnsgBoyoTcXU3LppelDFAIZePbRPySVHklTtuK57kacgU5grc7gPM04bZV96eliGrRU7Iw==", - "requires": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" - } - } - }, - "remark-lint-no-shortcut-reference-image": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-2.0.1.tgz", - "integrity": "sha512-2jcZBdnN6ecP7u87gkOVFrvICLXIU5OsdWbo160FvS/2v3qqqwF2e/n/e7D9Jd+KTq1mR1gEVVuTqkWWuh3cig==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-no-shortcut-reference-link": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-2.0.1.tgz", - "integrity": "sha512-pTZbslG412rrwwGQkIboA8wpBvcjmGFmvugIA+UQR+GfFysKtJ5OZMPGJ98/9CYWjw9Z5m0/EktplZ5TjFjqwA==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-no-undefined-references": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-2.0.1.tgz", - "integrity": "sha512-tXM2ctFnduC3QcskrIePUajcjtNtBmo2dvlj4aoQJtQy09Soav/rYngb8u/SgERc6Irdmm5s55UAwR9CcSrzVg==", - "requires": { - "collapse-white-space": "^1.0.4", - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-no-unused-definitions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-2.0.1.tgz", - "integrity": "sha512-+BMc0BOjc364SvKYLkspmxDch8OaKPbnUGgQBvK0Bmlwy42baR4C9zhwAWBxm0SBy5Z4AyM4G4jKpLXPH40Oxg==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-lint-ordered-list-marker-style": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-2.0.1.tgz", - "integrity": "sha512-Cnpw1Dn9CHn+wBjlyf4qhPciiJroFOEGmyfX008sQ8uGoPZsoBVIJx76usnHklojSONbpjEDcJCjnOvfAcWW1A==", - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "remark-message-control": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-6.0.0.tgz", - "integrity": "sha512-k9bt7BYc3G7YBdmeAhvd3VavrPa/XlKWR3CyHjr4sLO9xJyly8WHHT3Sp+8HPR8lEUv+/sZaffL7IjMLV0f6BA==", - "requires": { - "mdast-comment-marker": "^1.0.0", - "unified-message-control": "^3.0.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, - "remark-preset-lint-recommended": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-4.0.1.tgz", - "integrity": "sha512-zn+ImQbOVcAQVWLL0R0rFQ2Wy8JyWnuU3mJ8Zh0EVOckglcxByssvTbKqPih3Lh8ogpE38EfnC3a/vshj4Jx6A==", - "requires": { - "remark-lint": "^7.0.0", - "remark-lint-final-newline": "^1.0.0", - "remark-lint-hard-break-spaces": "^2.0.0", - "remark-lint-list-item-bullet-indent": "^2.0.0", - "remark-lint-list-item-indent": "^2.0.0", - "remark-lint-no-auto-link-without-protocol": "^2.0.0", - "remark-lint-no-blockquote-without-marker": "^3.0.0", - "remark-lint-no-duplicate-definitions": "^2.0.0", - "remark-lint-no-heading-content-indent": "^2.0.0", - "remark-lint-no-inline-padding": "^2.0.0", - "remark-lint-no-literal-urls": "^2.0.0", - "remark-lint-no-shortcut-reference-image": "^2.0.0", - "remark-lint-no-shortcut-reference-link": "^2.0.0", - "remark-lint-no-undefined-references": "^2.0.0", - "remark-lint-no-unused-definitions": "^2.0.0", - "remark-lint-ordered-list-marker-style": "^2.0.0" - } - }, - "remark-preset-prettier": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/remark-preset-prettier/-/remark-preset-prettier-0.4.1.tgz", - "integrity": "sha512-m+yzI9LN/dkVq/HUYR3aEAjvDBO4hZMwgq245RBYUzSKXZPboMTlxBTgBuK7Tcw5CKJphjoL31slQQcDu1KGZQ==", - "requires": {} - }, - "remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "to-vfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz", - "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==", - "requires": { - "is-buffer": "^2.0.0", - "vfile": "^4.0.0" - } - }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - }, - "unified-args": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-8.1.0.tgz", - "integrity": "sha512-t1HPS1cQPsVvt/6EtyWIbQGurza5684WGRigNghZRvzIdHm3LPgMdXPyGx0npORKzdiy5+urkF0rF5SXM8lBuQ==", - "requires": { - "camelcase": "^5.0.0", - "chalk": "^3.0.0", - "chokidar": "^3.0.0", - "fault": "^1.0.2", - "json5": "^2.0.0", - "minimist": "^1.2.0", - "text-table": "^0.2.0", - "unified-engine": "^8.0.0" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "unified-engine": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-8.2.0.tgz", - "integrity": "sha512-ZlMm62ejrf+tJHdyOjQfljszngQjRor95q2XZMGk6rpJUYi7ZIHY/EXEhOcj9PZkMKKdLIM+dqL4s0ceyk9wbA==", - "requires": { - "concat-stream": "^2.0.0", - "debug": "^4.0.0", - "fault": "^1.0.0", - "figures": "^3.0.0", - "glob": "^7.0.3", - "ignore": "^5.0.0", - "is-buffer": "^2.0.0", - "is-empty": "^1.0.0", - "is-plain-obj": "^2.0.0", - "js-yaml": "^3.6.1", - "load-plugin": "^3.0.0", - "parse-json": "^5.0.0", - "to-vfile": "^6.0.0", - "trough": "^1.0.0", - "unist-util-inspect": "^5.0.0", - "vfile-reporter": "^6.0.0", - "vfile-statistics": "^1.1.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - } - } - }, - "unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", - "requires": { - "wrapped": "^1.0.1" - } - }, - "unified-message-control": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.3.tgz", - "integrity": "sha512-oY5z2n8ugjpNHXOmcgrw0pQeJzavHS0VjPBP21tOcm7rc2C+5Q+kW9j5+gqtf8vfW/8sabbsK5+P+9QPwwEHDA==", - "requires": { - "unist-util-visit": "^2.0.0", - "vfile-location": "^3.0.0" - } - }, - "unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - }, - "unist-util-inspect": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-5.0.1.tgz", - "integrity": "sha512-fPNWewS593JSmg49HbnE86BJKuBi1/nMWhDSccBvbARfxezEuJV85EaARR9/VplveiwCoLm2kWq+DhP8TBaDpw==", - "requires": { - "is-empty": "^1.0.0" - } - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - }, - "unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "requires": { - "@types/unist": "^2.0.2" - } - }, - "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } - }, - "vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "vfile-reporter": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.2.tgz", - "integrity": "sha512-GN2bH2gs4eLnw/4jPSgfBjo+XCuvnX9elHICJZjVD4+NM0nsUrMTvdjGY5Sc/XG69XVTgLwj7hknQVc6M9FukA==", - "requires": { - "repeat-string": "^1.5.0", - "string-width": "^4.0.0", - "supports-color": "^6.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-sort": "^2.1.2", - "vfile-statistics": "^1.1.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "vfile-sort": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.2.tgz", - "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==" - }, - "vfile-statistics": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.4.tgz", - "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "wrapped": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", - "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", - "requires": { - "co": "3.1.0", - "sliced": "^1.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 49b05fe89..000000000 --- a/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "apigee-devrel", - "description": "Common solutions and tools developed for Apigee.", - "license": "Apache-2.0", - "licenses": [ - { - "type": "Apache-2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0" - } - ], - "scripts": { - "build-pipeline-runner": "docker build -t apigee/devrel ./tools/pipeline-runner", - "pipeline": "npm run build-pipeline-runner && docker run -e APIGEE_USER -e APIGEE_PASS -e APIGEE_ORG -e APIGEE_ENV -v $(pwd):/home -v /var/run/docker.sock:/var/run/docker.sock -it apigee/devrel run-pipelines.sh" - }, - "dependencies": { - "eslint": "^7.0.0", - "eslint-config-google": "^0.14.0", - "eslint-config-prettier": "^6.11.0", - "prettier": "^2.0.5", - "remark-cli": "^9.0.0", - "remark-lint": "^7.0.0", - "remark-lint-maximum-line-length": "^2.0.3", - "remark-preset-lint-recommended": "^4.0.0", - "remark-preset-prettier": "^0.4.0" - } -} diff --git a/references/cicd-pipeline/.eslintrc.yml b/references/cicd-pipeline/.eslintrc.yml index 90171efd7..6a398a1a9 100644 --- a/references/cicd-pipeline/.eslintrc.yml +++ b/references/cicd-pipeline/.eslintrc.yml @@ -16,7 +16,6 @@ env: node: true es6: true extends: - - google - prettier rules: no-var: 0 diff --git a/references/cicd-pipeline/package.json b/references/cicd-pipeline/package.json index 2fb4a7d99..70e660c9a 100644 --- a/references/cicd-pipeline/package.json +++ b/references/cicd-pipeline/package.json @@ -16,7 +16,6 @@ "apickli": "^3.0.1", "apigeelint": "^2.13.0", "eslint": "^7.0.0", - "eslint-config-google": "^0.14.0", "eslint-config-prettier": "^6.11.0", "mocha": "^7.2.0", "nyc": "^15.1.0", From d16fab31b9e34c49ce772a1113591bc06e212e64 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 10 Jun 2022 16:54:29 +0200 Subject: [PATCH 144/562] fix typo --- tools/hybrid-quickstart/steps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 559e8f2fb..6feab4a20 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -86,7 +86,7 @@ set_config_params() { export JQ_VERSION='jq-1.6/jq-osx-amd64' export KPT_BINARY='kpt_darwin_amd64-0.34.0.tar.gz' if ! [ -x "$(command -v timeout)" ]; then - echo "Please install the timeouty command for macOS. E.g. 'brew install coreutils'" + echo "Please install the timeout command for macOS. E.g. 'brew install coreutils'" exit 2 fi else From 6e1fd9e95a4398a45d9f2762af5787d27f06bb0f Mon Sep 17 00:00:00 2001 From: Arnaud Date: Sat, 11 Jun 2022 14:39:37 +0200 Subject: [PATCH 145/562] add missing unzip dependency check --- tools/apigee-sackmesser/bin/sackmesser | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apigee-sackmesser/bin/sackmesser b/tools/apigee-sackmesser/bin/sackmesser index ae07ad04d..670109bec 100755 --- a/tools/apigee-sackmesser/bin/sackmesser +++ b/tools/apigee-sackmesser/bin/sackmesser @@ -67,7 +67,7 @@ elif [ -z "$CMD_TYPE" ] || [ ! -f "$SACKMESSER_ROOT"/cmd/"$CMD_TYPE"/"$CMD_TYPE" exit 1 fi -for dependency in jq xmllint mvn +for dependency in jq xmllint mvn unzip do if ! [ -x "$(command -v $dependency)" ]; then >&2 logfatal "Required command is not on your PATH: $dependency." From 411a286ab39894b4b995ce3627c44554bd39a2a7 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 14 Jun 2022 09:11:37 +0200 Subject: [PATCH 146/562] reference new KVM API in the Apigee API --- references/kvm-admin-api/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/references/kvm-admin-api/README.md b/references/kvm-admin-api/README.md index c785f8961..6350e7dc3 100644 --- a/references/kvm-admin-api/README.md +++ b/references/kvm-admin-api/README.md @@ -1,8 +1,12 @@ # KVM Admin Proxy +**Note:** KVM APIs have been added to Apigee X and can be found +in the [Apigee API docs](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments.keyvaluemaps). +This KVM admin proxy is no longer needed if you are using Apigee X. + Depending on the Apigee deployment model you might have Management APIs for accessing and modifying the entries of Apigee Key Value Maps (KVMs). In Apigee -hybrid and Apigee X the access to entries of the KVMs is not provided via the +hybrid the access to entries of the KVMs is not provided via the Apigee APIs and you will need to leverage Apigee policies to perform CRUD operations on the KVM contents. From 9a966823b1291a681021f2aa92b9d45ee4c0e770 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 14 Jun 2022 17:15:27 +0200 Subject: [PATCH 147/562] remove patch on dutch healthcare --- .../apiproxy/resources/jsc/mock.js | 10 +- .../apiproxy/resources/jsc/SetMockPath.js | 2 +- .../healthcare-v1/package-lock.json | 946 ------------------ .../healthcare-v1/package.json | 3 +- references/dutch-healthcare/pipeline.sh | 10 +- 5 files changed, 12 insertions(+), 959 deletions(-) diff --git a/references/dutch-healthcare/healthcare-mock-v1/apiproxy/resources/jsc/mock.js b/references/dutch-healthcare/healthcare-mock-v1/apiproxy/resources/jsc/mock.js index aebc5e21c..4690a7370 100644 --- a/references/dutch-healthcare/healthcare-mock-v1/apiproxy/resources/jsc/mock.js +++ b/references/dutch-healthcare/healthcare-mock-v1/apiproxy/resources/jsc/mock.js @@ -17,11 +17,11 @@ const verb = context.getVariable("request.verb"); const path = context.getVariable("mock.path"); var response = {"error": "not found"}; -var status = 404; +var httpStatus = 404; // metadata if(verb === "GET" && path === "/metadata") { - status = 200; + httpStatus = 200; response = { "resourceType": "CapabilityStatement", "id": "0c18f1d5-d005-4031-9e67-6222ea0308b3", @@ -146,7 +146,7 @@ if(verb === "GET" && path === "/metadata") { } // Patient if(verb === "GET" && path === "/Patient/nl-core-patient-03") { - status = 200; + httpStatus = 200; response = { "resourceType": "Patient", "id": "nl-core-patient-03", @@ -399,7 +399,7 @@ if(verb === "GET" && path === "/Patient/nl-core-patient-03") { } // AllergyIntolerance if(verb === "GET" && path === "/AllergyIntolerance/zib-allergyintolerance-01") { - status = 200; + httpStatus = 200; response = { "resourceType": "AllergyIntolerance", "id": "zib-allergyintolerance-01", @@ -520,6 +520,6 @@ if(verb === "GET" && path === "/AllergyIntolerance/zib-allergyintolerance-01") { }; } -context.setVariable("response.status.code", status); +context.setVariable("response.status.code", httpStatus); context.setVariable("response.content", JSON.stringify(response)); context.setVariable("response.header.Content-Type", "application/json"); diff --git a/references/dutch-healthcare/healthcare-v1/apiproxy/resources/jsc/SetMockPath.js b/references/dutch-healthcare/healthcare-v1/apiproxy/resources/jsc/SetMockPath.js index 9fe4f5ef5..6dc8ae58e 100644 --- a/references/dutch-healthcare/healthcare-v1/apiproxy/resources/jsc/SetMockPath.js +++ b/references/dutch-healthcare/healthcare-v1/apiproxy/resources/jsc/SetMockPath.js @@ -14,5 +14,5 @@ * limitations under the License. */ -var mockUrl = context.getVariable("proxy.url").replace("/healthcare/v1", "/healthcare-mock/v1").replace(/https?/i, "https") +var mockUrl = context.getVariable("proxy.url").replace("/healthcare/v1", "/healthcare-mock/v1") context.setVariable('target.url', mockUrl); diff --git a/references/dutch-healthcare/healthcare-v1/package-lock.json b/references/dutch-healthcare/healthcare-v1/package-lock.json index d5623720a..63f5101b2 100644 --- a/references/dutch-healthcare/healthcare-v1/package-lock.json +++ b/references/dutch-healthcare/healthcare-v1/package-lock.json @@ -9,7 +9,6 @@ "dependencies": { "@cucumber/cucumber": "^7.3.0", "apickli": "^3.0.1", - "apigeetool": "^0.15.1", "sleep-promise": "^9.1.0" } }, @@ -192,41 +191,6 @@ "xpath.js": "1.x" } }, - "node_modules/apigeetool": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/apigeetool/-/apigeetool-0.15.1.tgz", - "integrity": "sha512-QwEf2n0buxx9yS+9PF+Y4y30hasc9IYH8dChJsgMU2LOkTnzuvjFt/dYxMQqJubBCkQf4KRSczz0n4XKZVkHNA==", - "dependencies": { - "async": "^1.4.2", - "body-parser": "^1.14.0", - "cli-table": "^0.3.0", - "fs-extra": "^4.0.2", - "mustache": "^2.1.3", - "netrc": "^0.1.3", - "node-unzip-2": "^0.2.7", - "node-zip": "^1.1.1", - "q": "^1.5.1", - "read": "^1.0.7", - "request": "^2.88.0", - "tar-fs": "^1.16.0", - "tmp": "^0.0.27", - "underscore": "^1.8.3" - }, - "bin": { - "apigeetool": "lib/cli.js" - } - }, - "node_modules/apigeetool/node_modules/tmp": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.27.tgz", - "integrity": "sha1-aq9CotdmQVCrUoKHBo7LwnE5oBM=", - "dependencies": { - "os-tmpdir": "~1.0.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -266,11 +230,6 @@ "repeat-string": "^1.6.1" } }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -302,84 +261,11 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/bl/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/bl/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/bl/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -389,38 +275,11 @@ "concat-map": "0.0.1" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "engines": { - "node": ">=0.2.0" - } - }, "node_modules/busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", @@ -444,14 +303,6 @@ "string_decoder": "~0.10.x" } }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", @@ -467,46 +318,11 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "node_modules/class-transformer": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" }, - "node_modules/cli-table": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", - "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", - "dependencies": { - "colors": "1.0.3" - }, - "engines": { - "node": ">= 0.2.0" - } - }, - "node_modules/cli-table/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/cli-table3": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", @@ -759,14 +575,6 @@ "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/error-stack-parser": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", @@ -924,40 +732,11 @@ "node": ">= 0.6" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1006,11 +785,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, "node_modules/graphlib": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", @@ -1085,17 +859,6 @@ "npm": ">=1.3.7" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -1251,14 +1014,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonpath-plus": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz", @@ -1289,14 +1044,6 @@ "verror": "1.10.0" } }, - "node_modules/jszip": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz", - "integrity": "sha1-dET9hVHd8+XacZj+oMkbyDCMwnQ=", - "dependencies": { - "pako": "~0.2.5" - } - }, "node_modules/knuth-shuffle-seeded": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", @@ -1552,15 +1299,6 @@ "tslib": "^2.0.3" } }, - "node_modules/match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", - "dependencies": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1657,22 +1395,6 @@ "node": ">= 0.10.0" } }, - "node_modules/mustache": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", - "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==", - "bin": { - "mustache": "bin/mustache" - }, - "engines": { - "npm": ">=1.4.0" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -1688,11 +1410,6 @@ "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=" }, - "node_modules/netrc": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", - "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" - }, "node_modules/next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -1707,33 +1424,6 @@ "tslib": "^2.0.3" } }, - "node_modules/node-unzip-2": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/node-unzip-2/-/node-unzip-2-0.2.8.tgz", - "integrity": "sha512-fmJi73zTRW7RSo/1wyrKc2srKMwb3L6Ppke/7elzQ0QRt6sUjfiIcVsWdrqO5uEHAdvRKXjoySuo4HYe5BB0rw==", - "dependencies": { - "binary": "~0.3.0", - "fstream": "~1.0.12", - "match-stream": "~0.0.2", - "pullstream": "~0.4.0", - "readable-stream": "~1.0.0", - "setimmediate": "~1.0.1" - } - }, - "node_modules/node-zip": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-zip/-/node-zip-1.1.1.tgz", - "integrity": "sha1-lNGtZ0o81GoViN1zb0qaeMdX62I=", - "dependencies": { - "jszip": "2.5.0" - }, - "bin": { - "nodezip": "bin/nodezip" - }, - "engines": { - "node": "*" - } - }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -1769,22 +1459,6 @@ "wrappy": "1" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", - "engines": { - "node": "*" - } - }, "node_modules/pad-right": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", @@ -1796,11 +1470,6 @@ "node": ">=0.10.0" } }, - "node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1888,26 +1557,6 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "node_modules/pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", - "dependencies": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" - } - }, - "node_modules/pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -1916,15 +1565,6 @@ "node": ">=6" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -1941,42 +1581,6 @@ "node": ">= 0.6" } }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -2085,17 +1689,6 @@ "node": ">=8" } }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -2167,11 +1760,6 @@ "node": ">= 0.8.0" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -2190,14 +1778,6 @@ "resolved": "https://registry.npmjs.org/sleep-promise/-/sleep-promise-9.1.0.tgz", "integrity": "sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==" }, - "node_modules/slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", - "dependencies": { - "readable-stream": "~1.0.31" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2595,66 +2175,6 @@ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" }, - "node_modules/tar-fs": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", - "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", - "dependencies": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" - } - }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/tar-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/tar-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/tar-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -2699,11 +2219,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" - }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -2724,14 +2239,6 @@ "node": ">=0.8" } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "engines": { - "node": "*" - } - }, "node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -2775,19 +2282,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -3072,37 +2566,6 @@ "xpath.js": "1.x" } }, - "apigeetool": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/apigeetool/-/apigeetool-0.15.1.tgz", - "integrity": "sha512-QwEf2n0buxx9yS+9PF+Y4y30hasc9IYH8dChJsgMU2LOkTnzuvjFt/dYxMQqJubBCkQf4KRSczz0n4XKZVkHNA==", - "requires": { - "async": "^1.4.2", - "body-parser": "^1.14.0", - "cli-table": "^0.3.0", - "fs-extra": "^4.0.2", - "mustache": "^2.1.3", - "netrc": "^0.1.3", - "node-unzip-2": "^0.2.7", - "node-zip": "^1.1.1", - "q": "^1.5.1", - "read": "^1.0.7", - "request": "^2.88.0", - "tar-fs": "^1.16.0", - "tmp": "^0.0.27", - "underscore": "^1.8.3" - }, - "dependencies": { - "tmp": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.27.tgz", - "integrity": "sha1-aq9CotdmQVCrUoKHBo7LwnE5oBM=", - "requires": { - "os-tmpdir": "~1.0.0" - } - } - } - }, "append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -3139,11 +2602,6 @@ "repeat-string": "^1.6.1" } }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3172,80 +2630,11 @@ "tweetnacl": "^0.14.3" } }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3255,35 +2644,11 @@ "concat-map": "0.0.1" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" - }, "busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", @@ -3306,11 +2671,6 @@ } } }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, "capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", @@ -3326,39 +2686,11 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, "class-transformer": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" }, - "cli-table": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", - "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" - } - } - }, "cli-table3": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", @@ -3572,14 +2904,6 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, "error-stack-parser": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", @@ -3705,37 +3029,11 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3778,11 +3076,6 @@ "path-is-absolute": "^1.0.0" } }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, "graphlib": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", @@ -3842,14 +3135,6 @@ "sshpk": "^1.7.0" } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -3980,14 +3265,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, "jsonpath-plus": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz", @@ -4009,14 +3286,6 @@ "verror": "1.10.0" } }, - "jszip": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz", - "integrity": "sha1-dET9hVHd8+XacZj+oMkbyDCMwnQ=", - "requires": { - "pako": "~0.2.5" - } - }, "knuth-shuffle-seeded": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", @@ -4272,15 +3541,6 @@ "tslib": "^2.0.3" } }, - "match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", - "requires": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4350,16 +3610,6 @@ "xtend": "^4.0.0" } }, - "mustache": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", - "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -4375,11 +3625,6 @@ "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=" }, - "netrc": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", - "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" - }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -4394,27 +3639,6 @@ "tslib": "^2.0.3" } }, - "node-unzip-2": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/node-unzip-2/-/node-unzip-2-0.2.8.tgz", - "integrity": "sha512-fmJi73zTRW7RSo/1wyrKc2srKMwb3L6Ppke/7elzQ0QRt6sUjfiIcVsWdrqO5uEHAdvRKXjoySuo4HYe5BB0rw==", - "requires": { - "binary": "~0.3.0", - "fstream": "~1.0.12", - "match-stream": "~0.0.2", - "pullstream": "~0.4.0", - "readable-stream": "~1.0.0", - "setimmediate": "~1.0.1" - } - }, - "node-zip": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-zip/-/node-zip-1.1.1.tgz", - "integrity": "sha1-lNGtZ0o81GoViN1zb0qaeMdX62I=", - "requires": { - "jszip": "2.5.0" - } - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -4441,16 +3665,6 @@ "wrappy": "1" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=" - }, "pad-right": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", @@ -4459,11 +3673,6 @@ "repeat-string": "^1.5.2" } }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -4536,36 +3745,11 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", - "requires": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" - } - }, - "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -4576,36 +3760,6 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "requires": { - "mute-stream": "~0.0.4" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -4690,14 +3844,6 @@ "resolve-from": "^5.0.0" } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4751,11 +3897,6 @@ "send": "0.17.1" } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -4771,14 +3912,6 @@ "resolved": "https://registry.npmjs.org/sleep-promise/-/sleep-promise-9.1.0.tgz", "integrity": "sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==" }, - "slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", - "requires": { - "readable-stream": "~1.0.31" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5129,65 +4262,6 @@ } } }, - "tar-fs": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", - "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", - "requires": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" - } - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -5222,11 +4296,6 @@ } } }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" - }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -5241,11 +4310,6 @@ "punycode": "^2.1.1" } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -5283,16 +4347,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/references/dutch-healthcare/healthcare-v1/package.json b/references/dutch-healthcare/healthcare-v1/package.json index d1b9f2e99..c29214baa 100644 --- a/references/dutch-healthcare/healthcare-v1/package.json +++ b/references/dutch-healthcare/healthcare-v1/package.json @@ -2,12 +2,11 @@ "name": "healthcare-v1", "version": "1.0.0", "scripts": { - "test": "npm i && npx cucumber-js --retry 3 test" + "test": "npm i && npx cucumber-js --publish-quiet --retry 3 test" }, "dependencies": { "@cucumber/cucumber": "^7.3.0", "apickli": "^3.0.1", - "apigeetool": "^0.15.1", "sleep-promise": "^9.1.0" } } diff --git a/references/dutch-healthcare/pipeline.sh b/references/dutch-healthcare/pipeline.sh index 83c65d766..0c528b5cb 100755 --- a/references/dutch-healthcare/pipeline.sh +++ b/references/dutch-healthcare/pipeline.sh @@ -25,13 +25,13 @@ export APIGEE_TOKEN (cd "$SCRIPTPATH"/../common-shared-flows && sh deploy.sh all --googleapi --async) ARGS=$* -SACK_ARGS="${ARGS:---googleapi}" +SACKMESSER_ARGS="${ARGS:---googleapi}" -bash "$SCRIPTPATH"/../../tools/apigee-sackmesser/bin/sackmesser deploy \ - -d healthcare-mock-v1 "$SACK_ARGS" +sackmesser deploy \ + -d healthcare-mock-v1 "$SACKMESSER_ARGS" -bash "$SCRIPTPATH"/../../tools/apigee-sackmesser/bin/sackmesser deploy \ - -d healthcare-v1 "$SACK_ARGS" +sackmesser deploy \ + -d healthcare-v1 "$SACKMESSER_ARGS" npm i --no-fund --prefix healthcare-v1 TEST_BASEPATH='/healthcare/v1' TEST_HOST="$APIGEE_X_HOSTNAME" npm test --prefix healthcare-v1 From 71d3c8b7cb1b90046600cea167879fef21d6b964 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 15 Jun 2022 08:18:26 +0200 Subject: [PATCH 148/562] clarify pipeline.md --- PIPELINES.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PIPELINES.md b/PIPELINES.md index 9a7e90bc1..080966bb9 100644 --- a/PIPELINES.md +++ b/PIPELINES.md @@ -11,9 +11,9 @@ The `pipeline.sh` script: - is run for all projects each night - is run on a private continuous integration server after an initial code review -- has access to an Apigee Edge organization, accessed with the variables - below. -- runs in a Docker container that you can see [here](./tools/pipeline-runner/Dockerfile). +- depends on external configuration parameters in the form of environment + variables to let the pipeline target Apigee X and Edge organizations +- runs in a Docker container that you can see [here](./tools/pipeline-runner/Dockerfile) You can run a pipeline locally: @@ -44,10 +44,10 @@ The `pipeline.sh` script: A simple example of a pipeline can be found [here](./references/js-callout/pipeline.sh) -### Variables +### Environment Variables Currently, pipelines tests can run against Apigee Edge or Apigee X. The - following variables are available for this: + following environment variables are available for this: | Variable | Description | | ----------------- | ----------------------------------------------------- | From 5ddb87ebc9f64bdc18d6be556ebe663d8d1d7a16 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 14 Jun 2022 10:17:42 +0200 Subject: [PATCH 149/562] testing JS callout on Edge and X --- references/js-callout/package-lock.json | 1060 +---------------- references/js-callout/package.json | 5 +- references/js-callout/pipeline.sh | 23 +- .../test/integration/features/support/init.js | 6 +- 4 files changed, 49 insertions(+), 1045 deletions(-) diff --git a/references/js-callout/package-lock.json b/references/js-callout/package-lock.json index 2faa86245..ca307121a 100644 --- a/references/js-callout/package-lock.json +++ b/references/js-callout/package-lock.json @@ -7,7 +7,6 @@ "devDependencies": { "@cucumber/cucumber": "^7.3.0", "apickli": "^3.0.1", - "apigeetool": "^0.14.2", "jest": "^26.1.0" } }, @@ -1170,31 +1169,6 @@ "xpath.js": "1.x" } }, - "node_modules/apigeetool": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/apigeetool/-/apigeetool-0.14.2.tgz", - "integrity": "sha512-pVHXCZKsJPGbl4DaAxzcSn5NYMfEDQRzXnj4iP+9krAlRR29xVzfTjBFNC9IiNo047aPHa3IQHZJHQjwgqeF9g==", - "dev": true, - "dependencies": { - "async": "^1.4.2", - "body-parser": "^1.14.0", - "cli-table": "^0.3.0", - "fs-extra": "^4.0.2", - "mustache": "^2.1.3", - "netrc": "^0.1.3", - "node-unzip-2": "^0.2.7", - "node-zip": "^1.1.1", - "q": "^1.5.1", - "read": "^1.0.7", - "request": "^2.88.0", - "tar-fs": "^1.16.0", - "tmp": "^0.0.27", - "underscore": "^1.8.3" - }, - "bin": { - "apigeetool": "lib/cli.js" - } - }, "node_modules/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -1284,12 +1258,6 @@ "node": ">=0.10.0" } }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1494,101 +1462,12 @@ "integrity": "sha1-Qpzuu/pffpNueNc/vcfacWKyDiA=", "dev": true }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "node_modules/bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/bl/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1626,47 +1505,16 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, "node_modules/busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", - "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "integrity": "sha512-InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg==", "dev": true, "dependencies": { "dicer": "0.2.5", @@ -1694,15 +1542,6 @@ "string_decoder": "~0.10.x" } }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1789,15 +1628,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - } - }, "node_modules/chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -1820,12 +1650,6 @@ "node": ">=10" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -1865,18 +1689,6 @@ "node": ">=0.10.0" } }, - "node_modules/cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, - "dependencies": { - "colors": "1.0.3" - }, - "engines": { - "node": ">= 0.2.0" - } - }, "node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -1935,15 +1747,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -2287,7 +2090,7 @@ "node_modules/dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "integrity": "sha512-FDvbtnq7dzlPz0wyYlOExifDEZcu8h+rErEXgfxqmLfRfC/kJidEFh4+effJRO3P0xmfqyPbSMG0LveNRfTKVg==", "dev": true, "dependencies": { "readable-stream": "1.1.x", @@ -2904,23 +2707,6 @@ "node": ">= 0.6" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2940,33 +2726,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4463,15 +4222,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonpath-plus": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz", @@ -4505,15 +4255,6 @@ "node": ">=0.6.0" } }, - "node_modules/jszip": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz", - "integrity": "sha1-dET9hVHd8+XacZj+oMkbyDCMwnQ=", - "dev": true, - "dependencies": { - "pako": "~0.2.5" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -4920,16 +4661,6 @@ "node": ">=0.10.0" } }, - "node_modules/match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -5071,15 +4802,16 @@ "dev": true }, "node_modules/multer": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "deprecated": "Multer 1.x is affected by CVE-2022-24434. This is fixed in v1.4.4-lts.1 which drops support for versions of Node.js before 6. Please upgrade to at least Node.js 6 and version 1.4.4-lts.1 of Multer. If you need support for older versions of Node.js, we are open to accepting patches that would fix the CVE on the main 1.x release line, whilst maintaining compatibility with Node.js 0.10.", "dev": true, "dependencies": { "append-field": "^1.0.0", "busboy": "^0.2.11", "concat-stream": "^1.5.2", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.4", "object-assign": "^4.1.1", "on-finished": "^2.3.0", "type-is": "^1.6.4", @@ -5089,24 +4821,6 @@ "node": ">= 0.10.0" } }, - "node_modules/mustache": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", - "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==", - "dev": true, - "bin": { - "mustache": "bin/mustache" - }, - "engines": { - "npm": ">=1.4.0" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -5152,12 +4866,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/netrc": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", - "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=", - "dev": true - }, "node_modules/next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -5216,35 +4924,6 @@ "node": ">=10" } }, - "node_modules/node-unzip-2": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/node-unzip-2/-/node-unzip-2-0.2.8.tgz", - "integrity": "sha512-fmJi73zTRW7RSo/1wyrKc2srKMwb3L6Ppke/7elzQ0QRt6sUjfiIcVsWdrqO5uEHAdvRKXjoySuo4HYe5BB0rw==", - "dev": true, - "dependencies": { - "binary": "~0.3.0", - "fstream": "~1.0.12", - "match-stream": "~0.0.2", - "pullstream": "~0.4.0", - "readable-stream": "~1.0.0", - "setimmediate": "~1.0.1" - } - }, - "node_modules/node-zip": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-zip/-/node-zip-1.1.1.tgz", - "integrity": "sha1-lNGtZ0o81GoViN1zb0qaeMdX62I=", - "dev": true, - "dependencies": { - "jszip": "2.5.0" - }, - "bin": { - "nodezip": "bin/nodezip" - }, - "engines": { - "node": "*" - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5414,24 +5093,6 @@ "node": ">= 0.8.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/p-each-series": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", @@ -5495,12 +5156,6 @@ "node": ">=0.10.0" } }, - "node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, "node_modules/parse-json": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", @@ -5736,18 +5391,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "node_modules/pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", - "dev": true, - "dependencies": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" - } - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5767,16 +5410,6 @@ "node": ">=6" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -5795,39 +5428,12 @@ "node": ">= 0.6" } }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "dev": true, - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -5866,24 +5472,6 @@ "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -6423,12 +6011,6 @@ "node": ">=0.10.0" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -6484,15 +6066,6 @@ "node": ">=8" } }, - "node_modules/slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", - "dev": true, - "dependencies": { - "readable-stream": "~1.0.31" - } - }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -7259,87 +6832,23 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "node_modules/tar-fs": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", - "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, "dependencies": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/tar-fs/node_modules/pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/tar-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -7377,30 +6886,12 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, - "node_modules/tmp": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.27.tgz", - "integrity": "sha1-aq9CotdmQVCrUoKHBo7LwnE5oBM=", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "node_modules/to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7496,12 +6987,6 @@ "node": ">=8" } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - }, "node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", @@ -7590,12 +7075,6 @@ "is-typedarray": "^1.0.0" } }, - "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -7611,15 +7090,6 @@ "node": ">=0.10.0" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -9095,28 +8565,6 @@ "xpath.js": "1.x" } }, - "apigeetool": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/apigeetool/-/apigeetool-0.14.2.tgz", - "integrity": "sha512-pVHXCZKsJPGbl4DaAxzcSn5NYMfEDQRzXnj4iP+9krAlRR29xVzfTjBFNC9IiNo047aPHa3IQHZJHQjwgqeF9g==", - "dev": true, - "requires": { - "async": "^1.4.2", - "body-parser": "^1.14.0", - "cli-table": "^0.3.0", - "fs-extra": "^4.0.2", - "mustache": "^2.1.3", - "netrc": "^0.1.3", - "node-unzip-2": "^0.2.7", - "node-zip": "^1.1.1", - "q": "^1.5.1", - "read": "^1.0.7", - "request": "^2.88.0", - "tar-fs": "^1.16.0", - "tmp": "^0.0.27", - "underscore": "^1.8.3" - } - }, "append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -9188,12 +8636,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -9364,99 +8806,12 @@ "integrity": "sha1-Qpzuu/pffpNueNc/vcfacWKyDiA=", "dev": true }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -9491,44 +8846,16 @@ "node-int64": "^0.4.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true - }, "busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", - "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "integrity": "sha512-InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg==", "dev": true, "requires": { "dicer": "0.2.5", @@ -9555,12 +8882,6 @@ } } }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -9637,15 +8958,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -9662,12 +8974,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -9703,15 +9009,6 @@ } } }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, - "requires": { - "colors": "1.0.3" - } - }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -9760,12 +9057,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -10060,7 +9351,7 @@ "dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "integrity": "sha512-FDvbtnq7dzlPz0wyYlOExifDEZcu8h+rErEXgfxqmLfRfC/kJidEFh4+effJRO3P0xmfqyPbSMG0LveNRfTKVg==", "dev": true, "requires": { "readable-stream": "1.1.x", @@ -10573,23 +9864,6 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -10603,29 +9877,6 @@ "dev": true, "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -11834,15 +11085,6 @@ "minimist": "^1.2.5" } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, "jsonpath-plus": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz", @@ -11867,15 +11109,6 @@ "verror": "1.10.0" } }, - "jszip": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz", - "integrity": "sha1-dET9hVHd8+XacZj+oMkbyDCMwnQ=", - "dev": true, - "requires": { - "pako": "~0.2.5" - } - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -12254,16 +11487,6 @@ "object-visit": "^1.0.0" } }, - "match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -12371,33 +11594,21 @@ "dev": true }, "multer": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", "dev": true, "requires": { "append-field": "^1.0.0", "busboy": "^0.2.11", "concat-stream": "^1.5.2", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.4", "object-assign": "^4.1.1", "on-finished": "^2.3.0", "type-is": "^1.6.4", "xtend": "^4.0.0" } }, - "mustache": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", - "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -12440,12 +11651,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "netrc": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", - "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=", - "dev": true - }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -12497,29 +11702,6 @@ } } }, - "node-unzip-2": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/node-unzip-2/-/node-unzip-2-0.2.8.tgz", - "integrity": "sha512-fmJi73zTRW7RSo/1wyrKc2srKMwb3L6Ppke/7elzQ0QRt6sUjfiIcVsWdrqO5uEHAdvRKXjoySuo4HYe5BB0rw==", - "dev": true, - "requires": { - "binary": "~0.3.0", - "fstream": "~1.0.12", - "match-stream": "~0.0.2", - "pullstream": "~0.4.0", - "readable-stream": "~1.0.0", - "setimmediate": "~1.0.1" - } - }, - "node-zip": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-zip/-/node-zip-1.1.1.tgz", - "integrity": "sha1-lNGtZ0o81GoViN1zb0qaeMdX62I=", - "dev": true, - "requires": { - "jszip": "2.5.0" - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -12655,18 +11837,6 @@ "word-wrap": "~1.2.3" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", - "dev": true - }, "p-each-series": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", @@ -12712,12 +11882,6 @@ "repeat-string": "^1.5.2" } }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, "parse-json": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", @@ -12904,18 +12068,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", - "dev": true, - "requires": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" - } - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -12932,12 +12084,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -12950,33 +12096,12 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -13008,26 +12133,6 @@ "type-fest": "^0.8.1" } }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -13483,12 +12588,6 @@ } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -13535,15 +12634,6 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", - "dev": true, - "requires": { - "readable-stream": "~1.0.31" - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -14204,71 +13294,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "tar-fs": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", - "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", - "dev": true, - "requires": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" - }, - "dependencies": { - "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -14314,27 +13339,12 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, - "tmp": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.27.tgz", - "integrity": "sha1-aq9CotdmQVCrUoKHBo7LwnE5oBM=", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.0" - } - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -14408,12 +13418,6 @@ "punycode": "^2.1.1" } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - }, "tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", @@ -14487,12 +13491,6 @@ "is-typedarray": "^1.0.0" } }, - "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -14505,12 +13503,6 @@ "set-value": "^2.0.1" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/references/js-callout/package.json b/references/js-callout/package.json index 4f0b227a4..43a0bf1dd 100644 --- a/references/js-callout/package.json +++ b/references/js-callout/package.json @@ -1,13 +1,12 @@ { "name": "js-callout", "scripts": { - "deploy": "./node_modules/.bin/apigeetool deployproxy -u $APIGEE_USER -p $APIGEE_PASS -o $APIGEE_ORG -e $APIGEE_ENV -n js-callout-v1 -V", - "test": "./node_modules/.bin/jest test/unit && ./node_modules/.bin/cucumber-js test/integration/features" + "unit-test": "./node_modules/.bin/jest test/unit", + "integration-test": "./node_modules/.bin/cucumber-js --publish-quiet test/integration/features" }, "devDependencies": { "@cucumber/cucumber": "^7.3.0", "apickli": "^3.0.1", - "apigeetool": "^0.14.2", "jest": "^26.1.0" } } diff --git a/references/js-callout/pipeline.sh b/references/js-callout/pipeline.sh index 0efc41090..18fc27378 100755 --- a/references/js-callout/pipeline.sh +++ b/references/js-callout/pipeline.sh @@ -15,8 +15,23 @@ # limitations under the License. set -e -set -x -npm i --no-fund -npm run deploy -npm test +SCRIPTPATH=$( (cd "$(dirname "$0")" && pwd )) + +(cd "$SCRIPTPATH" && npm i --no-fund) +(cd "$SCRIPTPATH" && npm run unit-test) + +echo "Testing on Apigee Edge" +sackmesser deploy --apigeeapi -d "$SCRIPTPATH" \ + -u "$APIGEE_USER" -p "$APIGEE_PASS" -o "$APIGEE_ORG" -e "$APIGEE_ENV" \ + -n js-callout-v1 + +(cd "$SCRIPTPATH" && TEST_HOST="$APIGEE_ORG-$APIGEE_ENV.apigee.net" npm run integration-test) + +echo "Testing on Apigee X" +APIGEE_TOKEN=$(gcloud auth print-access-token); +sackmesser deploy --googleapi -d "$SCRIPTPATH" \ + -t "$APIGEE_TOKEN" -o "$APIGEE_X_ORG" -e "$APIGEE_X_ENV" \ + -n js-callout-v1 + +(cd "$SCRIPTPATH" && TEST_HOST="$APIGEE_X_HOSTNAME" npm run integration-test) diff --git a/references/js-callout/test/integration/features/support/init.js b/references/js-callout/test/integration/features/support/init.js index 540b0aed3..1b4a884ed 100644 --- a/references/js-callout/test/integration/features/support/init.js +++ b/references/js-callout/test/integration/features/support/init.js @@ -20,10 +20,8 @@ const { Before: before } = require("@cucumber/cucumber"); before(function () { this.apickli = new apickli.Apickli( "https", - process.env.APIGEE_ORG + - "-" + - process.env.APIGEE_ENV + - ".apigee.net/js-callout/v1" + process.env.TEST_HOST + + "/js-callout/v1" ); this.apickli.addRequestHeader("Cache-Control", "no-cache"); From 8d06567fca5c15c5a9ca3129715178dd3fee6445 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 15 Jun 2022 15:42:16 +0200 Subject: [PATCH 150/562] CICD pipeline jenkins cloud build --- references/cicd-pipeline/jenkins-build/README.md | 2 +- .../cicd-pipeline/jenkins-build/jenkins-web/cloudbuild.yml | 2 +- .../jenkins-build/jenkinsfile-runner/cloudbuild.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/references/cicd-pipeline/jenkins-build/README.md b/references/cicd-pipeline/jenkins-build/README.md index 8197e2637..2da44de1d 100644 --- a/references/cicd-pipeline/jenkins-build/README.md +++ b/references/cicd-pipeline/jenkins-build/README.md @@ -38,7 +38,7 @@ docker build -f ./jenkins-web/Dockerfile -t apigee/devrel-jenkins:latest . ```sh PROJECT_ID= -gcloud builds submit --config ./jenkinsfile-runner/cloudbuild.yml --project $PROJECT_ID +gcloud builds submit --config ./cloudbuild.yml --project $PROJECT_ID gcloud builds submit --config ./jenkins-web/cloudbuild.yml --project $PROJECT_ID docker pull gcr.io/$PROJECT_ID/apigee/devrel-jenkins:latest docker tag gcr.io/$PROJECT_ID/apigee/devrel-jenkins:latest apigee/devrel-jenkins:latest diff --git a/references/cicd-pipeline/jenkins-build/jenkins-web/cloudbuild.yml b/references/cicd-pipeline/jenkins-build/jenkins-web/cloudbuild.yml index a67a7d823..bf8c4adeb 100644 --- a/references/cicd-pipeline/jenkins-build/jenkins-web/cloudbuild.yml +++ b/references/cicd-pipeline/jenkins-build/jenkins-web/cloudbuild.yml @@ -19,7 +19,7 @@ steps: - "--tag=gcr.io/$PROJECT_ID/apigee/devrel-jenkins:latest" - "--file=./jenkins-web/Dockerfile" - "--build-arg=baseImage=gcr.io/$PROJECT_ID/apigee/devrel-jenkins-base" - - "--build-arg=baseImageTag=gcr.io/$PROJECT_ID/apigee/devrel-jenkins-base" + - "--build-arg=baseImageTag=latest" - . images: - "gcr.io/$PROJECT_ID/apigee/devrel-jenkins:latest" diff --git a/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/cloudbuild.yml b/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/cloudbuild.yml index 2516e5035..e2f107dbc 100644 --- a/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/cloudbuild.yml +++ b/references/cicd-pipeline/jenkins-build/jenkinsfile-runner/cloudbuild.yml @@ -19,7 +19,7 @@ steps: - "--tag=gcr.io/$PROJECT_ID/apigee/devrel-jenkinsfile-runner:latest" - "--file=./jenkinsfile-runner/Dockerfile" - "--build-arg=baseImage=gcr.io/$PROJECT_ID/apigee/devrel-jenkins-base" - - "--build-arg=baseImageTag=gcr.io/$PROJECT_ID/apigee/devrel-jenkins-base" + - "--build-arg=baseImageTag=latest" - . images: - "gcr.io/$PROJECT_ID/apigee/devrel-jenkinsfile-runner:latest" From c14ef637c54c781b499fd41c967556d4554b265b Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 15 Jun 2022 16:26:39 +0200 Subject: [PATCH 151/562] Change js callout to add a response header instead of removing one --- references/js-callout/README.md | 10 +++--- .../resources/jsc/responseMediation.js | 4 +-- .../integration/features/js-callout.feature | 6 ++-- .../test/unit/responseMediation.test.js | 33 +++++-------------- 4 files changed, 17 insertions(+), 36 deletions(-) diff --git a/references/js-callout/README.md b/references/js-callout/README.md index a20cc75c8..dd02d917f 100644 --- a/references/js-callout/README.md +++ b/references/js-callout/README.md @@ -3,17 +3,17 @@ This reference project demonstrates the best practices of writing JavaScript code within the Apigee context. -Project contains code to implement a simple response mediation by removing -sensitive data from response content before sending it off to the client -application. +It contains code to implement a simple response mediation that adds an +extra response header to the response content before sending it off to the +client application. -Project also contains unit tests to test the JavaScript code and mock +It also contains unit tests to test the JavaScript code and mock Apigee global functions using [Jest](https://jestjs.io/). ## Prerequisites - [Node JS](https://nodejs.org/) LTS or above -- Apigee Evaluation [Organization](https://login.apigee.com/sign__up) +- Apigee Organization ## Quick Start diff --git a/references/js-callout/apiproxy/resources/jsc/responseMediation.js b/references/js-callout/apiproxy/resources/jsc/responseMediation.js index ccc005db7..7fe544c8c 100644 --- a/references/js-callout/apiproxy/resources/jsc/responseMediation.js +++ b/references/js-callout/apiproxy/resources/jsc/responseMediation.js @@ -16,8 +16,6 @@ const responseBody = JSON.parse(context.getVariable("response.content")); -if (responseBody.headers["X-Amzn-Trace-Id"]) { - delete responseBody.headers["X-Amzn-Trace-Id"]; -} +responseBody.headers["x-foo"] = "bar"; context.setVariable("response.content", JSON.stringify(responseBody, null, 2)); diff --git a/references/js-callout/test/integration/features/js-callout.feature b/references/js-callout/test/integration/features/js-callout.feature index 78b65bd39..348824e25 100644 --- a/references/js-callout/test/integration/features/js-callout.feature +++ b/references/js-callout/test/integration/features/js-callout.feature @@ -1,8 +1,8 @@ Feature: As an API developer - I want to hide sensitive data from the response body - So that I expose only what is necessary for the clients + I want to add additional data to the HTTP response + So that I can forward relevant metadata to the clients Scenario: Setting headers in GET request When I GET /get - Then response body should not contain X-Amzn-Trace.Id + Then response body should contain x-foo diff --git a/references/js-callout/test/unit/responseMediation.test.js b/references/js-callout/test/unit/responseMediation.test.js index bd3fba260..b07ab689b 100644 --- a/references/js-callout/test/unit/responseMediation.test.js +++ b/references/js-callout/test/unit/responseMediation.test.js @@ -21,15 +21,14 @@ const runCode = () => { return require(code); }; -const responseWithTraceId = { - headers: { - "X-Amzn-Trace-Id": "blah blah", - }, +const originalResponse = { + headers: {}, }; -const responseWithoutTraceId = { +const responseWithExtraHeader = { headers: { "Content-Type": "text/plain", + "x-foo": "bar" }, }; @@ -37,10 +36,10 @@ beforeEach(() => { global.context = {}; }); -test("can remove trace id from response", () => { +test("can add an extra header to the response", () => { global.context.getVariable = jest .fn() - .mockReturnValueOnce(JSON.stringify(responseWithTraceId)); + .mockReturnValueOnce(JSON.stringify(originalResponse)); global.context.setVariable = jest.fn(); @@ -50,21 +49,5 @@ test("can remove trace id from response", () => { expect( JSON.parse(global.context.setVariable.mock.calls[0][1]) - ).not.toHaveProperty("X-Amzn-Trace.Id"); -}); - -test("no change in responses where there is no sensitive properties", () => { - global.context.getVariable = jest - .fn() - .mockReturnValueOnce(JSON.stringify(responseWithoutTraceId)); - - global.context.setVariable = jest.fn(); - - runCode(); - - expect(global.context.setVariable.mock.calls[0][0]).toBe("response.content"); - - expect(JSON.parse(global.context.setVariable.mock.calls[0][1])).toStrictEqual( - responseWithoutTraceId - ); -}); + ).toHaveProperty("headers.x-foo"); +}); \ No newline at end of file From 3715b341ab500455c54291b10af0c5e36ab992b8 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 17 Jun 2022 14:33:39 +0200 Subject: [PATCH 152/562] Extend Java reference to support Apigee X --- references/java-callout/pipeline.sh | 14 ++++-- references/java-callout/pom.xml | 2 +- .../apiproxy/{currency-v1.xml => java-v1.xml} | 2 +- .../java-callout/proxy-v1/package-lock.json | 4 +- references/java-callout/proxy-v1/package.json | 4 +- references/java-callout/proxy-v1/pom.xml | 44 +++++++------------ .../test/features/step_definitions/init.js | 5 +-- 7 files changed, 35 insertions(+), 40 deletions(-) rename references/java-callout/proxy-v1/apiproxy/{currency-v1.xml => java-v1.xml} (94%) diff --git a/references/java-callout/pipeline.sh b/references/java-callout/pipeline.sh index 815a65c10..d832b8b59 100755 --- a/references/java-callout/pipeline.sh +++ b/references/java-callout/pipeline.sh @@ -14,7 +14,15 @@ # limitations under the License. set -e -set -x -mvn install -Ptest -B -ntp -npm test --prefix proxy-v1 +echo "Testing on Apigee Edge" +mvn install -Papigee-edge -Dapigee.env="$APIGEE_ENV" -Dapigee.org="$APIGEE_ORG" \ + -Dapigee.username="$APIGEE_USER" -Dapigee.password="$APIGEE_PASS" -B -ntp + +TEST_HOST="$APIGEE_ORG-$APIGEE_ENV.apigee.net" npm test --prefix proxy-v1 + +echo "Testing on Apigee X" +mvn install -Papigee-x -Dapigee.env="$APIGEE_X_ENV" -Dapigee.org="$APIGEE_X_ORG" \ + -Dapigee.bearer="$(gcloud auth print-access-token)" -B -ntp + + TEST_HOST="$APIGEE_X_HOSTNAME" npm test --prefix proxy-v1 diff --git a/references/java-callout/pom.xml b/references/java-callout/pom.xml index 57da7f210..e5321175a 100644 --- a/references/java-callout/pom.xml +++ b/references/java-callout/pom.xml @@ -23,7 +23,7 @@ xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/ java-project-v1 pom 1.0 - Currency Parent Project + Java Callout Reference java-callout proxy-v1 diff --git a/references/java-callout/proxy-v1/apiproxy/currency-v1.xml b/references/java-callout/proxy-v1/apiproxy/java-v1.xml similarity index 94% rename from references/java-callout/proxy-v1/apiproxy/currency-v1.xml rename to references/java-callout/proxy-v1/apiproxy/java-v1.xml index d27e6e9e9..386279126 100644 --- a/references/java-callout/proxy-v1/apiproxy/currency-v1.xml +++ b/references/java-callout/proxy-v1/apiproxy/java-v1.xml @@ -15,7 +15,7 @@ limitations under the License. --> - + @description diff --git a/references/java-callout/proxy-v1/package-lock.json b/references/java-callout/proxy-v1/package-lock.json index 60a952a55..a98c8e8a1 100644 --- a/references/java-callout/proxy-v1/package-lock.json +++ b/references/java-callout/proxy-v1/package-lock.json @@ -1,11 +1,11 @@ { - "name": "currency-v1", + "name": "java-v1", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "currency-v1", + "name": "java-v1", "version": "1.0.0", "devDependencies": { "@cucumber/cucumber": "^7.3.0", diff --git a/references/java-callout/proxy-v1/package.json b/references/java-callout/proxy-v1/package.json index 0cdc802da..a5ff80bef 100644 --- a/references/java-callout/proxy-v1/package.json +++ b/references/java-callout/proxy-v1/package.json @@ -1,11 +1,11 @@ { - "name": "currency-v1", + "name": "java-v1", "version": "1.0.0", "devDependencies": { "@cucumber/cucumber": "^7.3.0", "apickli": "^3.0.1" }, "scripts": { - "test": "npx cucumber-js test" + "test": "npx cucumber-js --publish-quiet test" } } diff --git a/references/java-callout/proxy-v1/pom.xml b/references/java-callout/proxy-v1/pom.xml index 2a9e433c9..5cd58f247 100644 --- a/references/java-callout/proxy-v1/pom.xml +++ b/references/java-callout/proxy-v1/pom.xml @@ -48,53 +48,43 @@ xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/ - - UTF-8 - - UTF-8 - - info + UTF-8 + UTF-8 + info ${basedir} ${basedir}/target - ${user.name} - - a local + 1.3.2 + 2.3.1 - test + apigee-edge - test + apigee-edge test https://api.enterprise.apigee.com v1 ${env.APIGEE_ORG} ${env.APIGEE_USER} ${env.APIGEE_PASS} - update - - ${env.API_DOMAIN_TEST} - ~@wip + override + ${edge.apigee.plugin.version} - prod + apigee-x - prod - prod - - https://api.enterprise.apigee.com + apigee-x + test + https://apigee.googleapis.com v1 - ${env.APIGEE_ORG} - ${env.APIGEE_USER} - ${env.APIGEE_PASS} + ${env.APIGEE_X_ORG} + ${bearer} override - 5 - - ${env.API_DOMAIN_PROD} ~@wip,~@mock + ${x.apigee.plugin.version} @@ -104,7 +94,7 @@ xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/ io.apigee.build-tools.enterprise4g apigee-edge-maven-plugin - 1.3.2 + ${apigee.plugin.version} org.apache.maven.plugins diff --git a/references/java-callout/proxy-v1/test/features/step_definitions/init.js b/references/java-callout/proxy-v1/test/features/step_definitions/init.js index e401e507e..86acf75c3 100644 --- a/references/java-callout/proxy-v1/test/features/step_definitions/init.js +++ b/references/java-callout/proxy-v1/test/features/step_definitions/init.js @@ -20,10 +20,7 @@ const { Before: before, setDefaultTimeout } = require("@cucumber/cucumber"); before(function () { this.apickli = new apickli.Apickli( "https", - process.env.APIGEE_ORG + - "-" + - process.env.APIGEE_ENV + - ".apigee.net/apigee-java/v1" + process.env.TEST_HOST + "/apigee-java/v1" ); }); From 3212a149d9847495be1507618acce5010b4bba45 Mon Sep 17 00:00:00 2001 From: Teodelas Date: Tue, 21 Jun 2022 15:41:46 -0400 Subject: [PATCH 153/562] Update README.md --- references/cicd-pipeline/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/references/cicd-pipeline/README.md b/references/cicd-pipeline/README.md index 4975aed09..d1fbc1af8 100644 --- a/references/cicd-pipeline/README.md +++ b/references/cicd-pipeline/README.md @@ -200,6 +200,14 @@ You are responsible to ensure you have the following plugins enabled: - [HTML Publisher](https://plugins.jenkins.io/htmlpublisher/) - [Cucumber Reports](https://plugins.jenkins.io/cucumber-reports/) +The Jenkinsfile provided in this repo expects a credential object to exist for Edge deployments: + +APIGEE_CREDS = credentials('apigee') +- [Jenkins Credentials](https://www.jenkins.io/doc/book/using/using-credentials/#adding-new-global-credentials) + +The Jenkinsfile provided in this repo also expects several environment variables. The required environment variables must be configured under Global properties in Sytem Configuration -> Configure System or provided as [parameters](https://wiki.jenkins.io/display/JENKINS/Parameterized+Build) when the pipeline runs. + + ### CI/CD Configuration Instructions #### Jenkins Configuration / Start From b9605e169cf98856ca70525c0b6007a464b93c73 Mon Sep 17 00:00:00 2001 From: Teodelas Date: Tue, 21 Jun 2022 15:49:43 -0400 Subject: [PATCH 154/562] Update README.md --- .../cicd-pipeline/jenkins-build/README.md | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/references/cicd-pipeline/jenkins-build/README.md b/references/cicd-pipeline/jenkins-build/README.md index 2da44de1d..5cf6751f4 100644 --- a/references/cicd-pipeline/jenkins-build/README.md +++ b/references/cicd-pipeline/jenkins-build/README.md @@ -164,14 +164,11 @@ docker run \ ##### Apigee X/hybrid in local Docker -*Note:* for long running jenkins deployments consider mounting the gcloud -service account credentials from the host filesystem instead of passing -the access token via environment variables. - ```sh docker run \ -p 8080:8080 \ -e APIGEE_TOKEN="$(gcloud auth print-access-token)" \ + -e GCP_SA_AUTH="token" \ -e APIGEE_ORG \ -e APIGEE_TEST_ENV="test1" \ -e APIGEE_PROD_ENV="prod1" \ @@ -181,6 +178,31 @@ docker run \ apigee/devrel-jenkins:latest ``` +*Note:* for long running jenkins deployments consider mounting the gcloud +service account credential file from the host filesystem instead of passing +the access token via environment variables: + +```sh +export KEY_FILE_PATH=/tmp/keys/jenkins-key-file.json + +gcloud iam service-accounts keys create $KEY_FILE_PATH --iam-account=$SERVICE_ACCOUNT_ID@$PROJECT_ID.iam.gserviceaccount.com + +docker run -d + -p 8080:8080 \ + -e APIGEE_TOKEN="$(gcloud auth print-access-token)" \ + -e APIGEE_ORG="teodlh-apigeex-342821" \ + -e APIGEE_TEST_ENV="eval" \ + -e APIGEE_PROD_ENV="prod" + -e TEST_HOST="apigeex.dlhdemo.com" \ + -e GCP_SA_AUTH="vm-scope" \ + -e API_VERSION="google" + -e JENKINS_ADMIN_PASS="password" \ + -e GOOGLE_APPLICATION_CREDENTIALS="$KEY_FILE_PATH" \ + -v "$KEY_FILE_PATH:$KEY_FILE_PATH:ro" \ + apigee/devrel-jenkins:latest +``` + + After the initialization is completed, you can login with the Jenkins web UI `http://localhost:8080` using the `admin` user and the password you specified before. From 329ba9897c7b2bbc242e84cd613b5329c88bc35a Mon Sep 17 00:00:00 2001 From: Teodelas Date: Tue, 21 Jun 2022 15:52:02 -0400 Subject: [PATCH 155/562] Update README.md --- references/cicd-pipeline/jenkins-build/README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/references/cicd-pipeline/jenkins-build/README.md b/references/cicd-pipeline/jenkins-build/README.md index 5cf6751f4..f3187fec4 100644 --- a/references/cicd-pipeline/jenkins-build/README.md +++ b/references/cicd-pipeline/jenkins-build/README.md @@ -189,11 +189,10 @@ gcloud iam service-accounts keys create $KEY_FILE_PATH --iam-account=$SERVICE_AC docker run -d -p 8080:8080 \ - -e APIGEE_TOKEN="$(gcloud auth print-access-token)" \ - -e APIGEE_ORG="teodlh-apigeex-342821" \ - -e APIGEE_TEST_ENV="eval" \ + -e APIGEE_ORG="my-org" \ + -e APIGEE_TEST_ENV="test" \ -e APIGEE_PROD_ENV="prod" - -e TEST_HOST="apigeex.dlhdemo.com" \ + -e TEST_HOST="api.example.apigee.com" \ -e GCP_SA_AUTH="vm-scope" \ -e API_VERSION="google" -e JENKINS_ADMIN_PASS="password" \ From b49ea6c3747d88dc35bfa2588d5782e7b847d1f5 Mon Sep 17 00:00:00 2001 From: Teodelas Date: Wed, 22 Jun 2022 09:20:42 -0400 Subject: [PATCH 156/562] Update README.md --- references/cicd-pipeline/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/references/cicd-pipeline/README.md b/references/cicd-pipeline/README.md index d1fbc1af8..2062fbb0a 100644 --- a/references/cicd-pipeline/README.md +++ b/references/cicd-pipeline/README.md @@ -200,12 +200,12 @@ You are responsible to ensure you have the following plugins enabled: - [HTML Publisher](https://plugins.jenkins.io/htmlpublisher/) - [Cucumber Reports](https://plugins.jenkins.io/cucumber-reports/) -The Jenkinsfile provided in this repo expects a credential object to exist for Edge deployments: +The Jenkinsfile provided in this repo expects a credential object to exist for Apigee Edge deployments: APIGEE_CREDS = credentials('apigee') - [Jenkins Credentials](https://www.jenkins.io/doc/book/using/using-credentials/#adding-new-global-credentials) -The Jenkinsfile provided in this repo also expects several environment variables. The required environment variables must be configured under Global properties in Sytem Configuration -> Configure System or provided as [parameters](https://wiki.jenkins.io/display/JENKINS/Parameterized+Build) when the pipeline runs. +The Jenkinsfile provided in this repo also expects several environment variables. The required environment variables must be configured under Global properties in System Configuration -> Configure System or provided as [parameters](https://wiki.jenkins.io/display/JENKINS/Parameterized+Build) when the pipeline runs. ### CI/CD Configuration Instructions From 2ab8ac450f8052046d935acfc010abbd26da7f80 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 28 Jun 2022 10:16:07 +0200 Subject: [PATCH 157/562] Bump hybrid 1.7.2 --- tools/hybrid-quickstart/steps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 6feab4a20..10de9f218 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -64,13 +64,13 @@ set_config_params() { export GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME:-apigee-hybrid} export GKE_CLUSTER_MACHINE_TYPE=${GKE_CLUSTER_MACHINE_TYPE:-e2-standard-4} echo "- GKE Node Type $GKE_CLUSTER_MACHINE_TYPE" - export APIGEE_HYBRID_VERSION='1.7.1' + export APIGEE_HYBRID_VERSION='1.7.2' echo "- Apigee hybrid version $APIGEE_HYBRID_VERSION" export KPT_VERSION='v0.34.0' echo "- kpt version $KPT_VERSION" export CERT_MANAGER_VERSION='v1.7.2' echo "- Cert Manager version $CERT_MANAGER_VERSION" - export ASM_VERSION='1.12' + export ASM_VERSION='1.13' echo "- ASM version $ASM_VERSION" OS_NAME=$(uname -s) From e87fd35f25a33b9a08780737fdd4e9677e9aa799 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Tue, 28 Jun 2022 14:18:08 +0200 Subject: [PATCH 158/562] jenkins docker change plugin installer --- references/cicd-pipeline/jenkins-build/Dockerfile | 2 +- references/cicd-pipeline/jenkins-build/plugins.txt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/references/cicd-pipeline/jenkins-build/Dockerfile b/references/cicd-pipeline/jenkins-build/Dockerfile index 0fdd33a43..2f05970ee 100644 --- a/references/cicd-pipeline/jenkins-build/Dockerfile +++ b/references/cicd-pipeline/jenkins-build/Dockerfile @@ -20,7 +20,7 @@ RUN apk update && apk add --no-cache git maven nodejs npm USER jenkins COPY --chown=jenkins plugins.txt /usr/share/jenkins/ref/plugins.txt -RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt +RUN jenkins-plugin-cli --plugin-file /usr/share/jenkins/ref/plugins.txt COPY --chown=jenkins jenkins.yml /var/jenkins_home/casc_configs/jenkins.yaml ENV CASC_JENKINS_CONFIG=/var/jenkins_home/casc_configs/jenkins.yaml diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 421dfa3ba..105495dc3 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -8,5 +8,4 @@ matrix-project:771.v574584b_39e60 script-security:1172.v35f6a_0b_8207e token-macro:293.v283932a_0a_b_49 workflow-aggregator:2.7 -workflow-multibranch:712.vc169a_1387405 workflow-step-api:625.vd896b_f445a_f8 From 9afbd0f00c498fd01dee1494c0893eef4b49fb44 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 11 Jul 2022 11:13:13 +0200 Subject: [PATCH 159/562] fix jenkins dependency pinning issue --- references/cicd-pipeline/jenkins-build/plugins.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 105495dc3..82a905e5a 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -5,7 +5,6 @@ htmlpublisher:1.30 junit:1.63 mask-passwords:3.1 matrix-project:771.v574584b_39e60 -script-security:1172.v35f6a_0b_8207e token-macro:293.v283932a_0a_b_49 workflow-aggregator:2.7 workflow-step-api:625.vd896b_f445a_f8 From bd98b9ea6a2bcf4e63b8748043609592916cab33 Mon Sep 17 00:00:00 2001 From: Omid Tahouri Date: Fri, 22 Jul 2022 12:55:58 +0100 Subject: [PATCH 160/562] hybrid-quickstart: added workload identity binding for apigee-metrics service account --- tools/hybrid-quickstart/steps.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 10de9f218..092f6fd00 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -737,6 +737,7 @@ create_sa() { create_k8s_sa_workload "apigee-runtime-$APIGEE_ORG_ENV_HASH-sa" "apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" create_k8s_sa_workload "apigee-udca-$APIGEE_ORG_ENV_HASH-sa" "apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" create_k8s_sa_workload "apigee-synchronizer-$APIGEE_ORG_ENV_HASH-sa" "apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" + create_k8s_sa_workload "apigee-metrics-sa" "apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" echo -n "🔛 Enabling runtime synchronizer" curl --fail -X POST -H "Authorization: Bearer $(token)" \ From cf549fce4cdc49a1dc8e98fc7583104bc7de733a Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 22 Jul 2022 16:15:49 +0200 Subject: [PATCH 161/562] fix: add the legacy ingress gateway flag to asmcli --- tools/hybrid-quickstart/steps.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 092f6fd00..9c267baa6 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -536,6 +536,7 @@ EOF --output_dir "$QUICKSTART_TOOLS"/istio-asm/install-out \ --custom_overlay "$QUICKSTART_TOOLS"/istio-asm/istio-operator-patch.yaml \ --ca mesh_ca \ + --option legacy-default-ingressgateway \ --enable_all echo "✅ ASM installed" From 9f330158a3a9b678804e0b7ca7715dda8821eff8 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Jul 2022 08:44:54 +0200 Subject: [PATCH 162/562] Fix ASM install. --- tools/hybrid-quickstart/steps.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 9c267baa6..4581ce9c9 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -109,6 +109,10 @@ set_config_params() { INGRESS_IP=$(gcloud compute addresses list --format json --filter "name=$INGRESS_IP_NAME" --format="get(address)" || echo "") export INGRESS_IP echo "- Ingress IP ${INGRESS_IP:-N/A}" + if [ -n "$INGRESS_IP" ]; then + export DNS_NAME=${DNS_NAME:="$(echo "$INGRESS_IP" | tr '.' '-').nip.io"} + fi + echo "- DNS NAME ${DNS_NAME:-N/A}" NAME_SERVER=$(gcloud dns managed-zones describe apigee-dns-zone --format="json" --format="get(nameServers[0])" 2>/dev/null || echo "") export NAME_SERVER echo "- Nameserver ${NAME_SERVER:-N/A}" @@ -528,6 +532,15 @@ EOF rm -rf "$QUICKSTART_TOOLS"/istio-asm/install-out mkdir -p "$QUICKSTART_TOOLS"/istio-asm/install-out + yes | "$QUICKSTART_TOOLS"/istio-asm/asmcli install \ + --project_id "$PROJECT_ID" \ + --fleet_id "$PROJECT_ID" \ + --cluster_name "$GKE_CLUSTER_NAME" \ + --cluster_location "$REGION" \ + --output_dir "$QUICKSTART_TOOLS"/istio-asm/install-out \ + --ca mesh_ca \ + --enable_all + yes | "$QUICKSTART_TOOLS"/istio-asm/asmcli install \ --project_id "$PROJECT_ID" \ --fleet_id "$PROJECT_ID" \ From 73bc9f81b1a3e2a8c915dc57a5750fcf6be5c05b Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Mon, 25 Jul 2022 08:52:49 +0200 Subject: [PATCH 163/562] fix: Fix jenkins plugin version resulution for matrix-project --- references/cicd-pipeline/jenkins-build/plugins.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/references/cicd-pipeline/jenkins-build/plugins.txt b/references/cicd-pipeline/jenkins-build/plugins.txt index 82a905e5a..0a693d3ab 100644 --- a/references/cicd-pipeline/jenkins-build/plugins.txt +++ b/references/cicd-pipeline/jenkins-build/plugins.txt @@ -4,7 +4,6 @@ git:4.11.1 htmlpublisher:1.30 junit:1.63 mask-passwords:3.1 -matrix-project:771.v574584b_39e60 token-macro:293.v283932a_0a_b_49 workflow-aggregator:2.7 workflow-step-api:625.vd896b_f445a_f8 From 6ed918d071053eafc465b50850e6562564761bbb Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Fri, 29 Jul 2022 09:36:15 +0200 Subject: [PATCH 164/562] feat: add mvn config plugin to cicd pipeline example --- references/cicd-pipeline/README.md | 24 +++-- references/cicd-pipeline/package.json | 2 +- references/cicd-pipeline/pom.xml | 95 ++++++++++++++++++- .../resources/edge/org/developers.json | 9 ++ 4 files changed, 118 insertions(+), 12 deletions(-) create mode 100644 references/cicd-pipeline/resources/edge/org/developers.json diff --git a/references/cicd-pipeline/README.md b/references/cicd-pipeline/README.md index 2062fbb0a..27dd30578 100644 --- a/references/cicd-pipeline/README.md +++ b/references/cicd-pipeline/README.md @@ -70,11 +70,11 @@ GIT_URL='https://github.com/ORG/REPO.git' ```sh cd devrel git init -git remote add origin $GIT_URL +git remote add gcp $GIT_URL git checkout -b feature/cicd-pipeline git add . git commit -m "initial commit" -git push -u origin feature/cicd-pipeline +git push -u gcp feature/cicd-pipeline ``` ## Orchestration using Run Cloud @@ -104,6 +104,11 @@ gcloud projects add-iam-policy-binding "$PROJECT_ID" \ gcloud projects add-iam-policy-binding "$PROJECT_ID" \ --member="serviceAccount:$CLOUD_BUILD_SA" \ --role="roles/apigee.apiAdmin" + +# Required only for org-level config +gcloud projects add-iam-policy-binding "$PROJECT_ID" \ + --member="serviceAccount:$CLOUD_BUILD_SA" \ + --role="roles/apigee.orgAdmin" ``` Configure the (externally reachable) hostname of your Apigee environment @@ -118,7 +123,7 @@ APIGEE_HOSTNAME=api.my-host.example.com Run the deployment (with a simulated git branch name) ```sh -gcloud builds submit --config='./ci-config/cloudbuild/cloudbuild.yaml' \ +gcloud builds submit --config='./references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml' \ --substitutions="_API_VERSION=google,_DEPLOYMENT_ORG=$PROJECT_ID,_APIGEE_TEST_ENV=$APIGEE_ENV,_INT_TEST_HOST=$APIGEE_HOSTNAME,BRANCH_NAME=experiment" ``` @@ -127,7 +132,7 @@ Or set up a push-trigger for the Google source repository ```sh gcloud beta builds triggers create cloud-source-repositories \ --repo="$REPO_NAME" --branch-pattern='.*' --name="cicd-example" \ - --build-config='ci-config/cloudbuild/cloudbuild.yaml' \ + --build-config='references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml' \ --substitutions="_API_VERSION=google,_DEPLOYMENT_ORG=$PROJECT_ID,_APIGEE_TEST_ENV=$APIGEE_ENV,_INT_TEST_HOST=$APIGEE_HOSTNAME" ``` @@ -164,7 +169,7 @@ echo "$APIGEE_PASS" | gcloud secrets create devrel_apigee_pass --data-file=- Run the deployment (with a simulated git branch name) ```sh -gcloud builds submit --config=./ci-config/cloudbuild/cloudbuild.yaml --substitutions="_API_VERSION=apigee,_INT_TEST_HOST=$APIGEE_ORG-$APIGEE_ENV.apigee.net,_DEPLOYMENT_ORG=$APIGEE_ORG,BRANCH_NAME=experiment" +gcloud builds submit --config=./references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml --substitutions="_API_VERSION=apigee,_INT_TEST_HOST=$APIGEE_ORG-$APIGEE_ENV.apigee.net,_DEPLOYMENT_ORG=$APIGEE_ORG,BRANCH_NAME=experiment" --project "$PROJECT_ID" ``` Or set up a push-trigger for the Google source repository @@ -172,8 +177,9 @@ Or set up a push-trigger for the Google source repository ```sh gcloud beta builds triggers create cloud-source-repositories \ --repo="$REPO_NAME" --branch-pattern='.*' --name="cicd-example-edge" \ - --build-config='ci-config/cloudbuild/cloudbuild.yaml' \ - --substitutions="_API_VERSION=apigee,_DEPLOYMENT_ORG=$APIGEE_ORG,_APIGEE_TEST_ENV=$APIGEE_ENV,_INT_TEST_HOST=$APIGEE_ORG-$APIGEE_ENV.apigee.net" + --build-config='references/cicd-pipeline/ci-config/cloudbuild/cloudbuild.yaml' \ + --substitutions="_API_VERSION=apigee,_DEPLOYMENT_ORG=$APIGEE_ORG,_APIGEE_TEST_ENV=$APIGEE_ENV,_INT_TEST_HOST=$APIGEE_ORG-$APIGEE_ENV.apigee.net" \ + --project "$PROJECT_ID" ``` ## Orchestration using Jenkins @@ -200,9 +206,9 @@ You are responsible to ensure you have the following plugins enabled: - [HTML Publisher](https://plugins.jenkins.io/htmlpublisher/) - [Cucumber Reports](https://plugins.jenkins.io/cucumber-reports/) -The Jenkinsfile provided in this repo expects a credential object to exist for Apigee Edge deployments: +The Jenkinsfile provided in this repo expects a credential object to exist for Apigee Edge deployments: -APIGEE_CREDS = credentials('apigee') +APIGEE_CREDS = credentials('apigee') - [Jenkins Credentials](https://www.jenkins.io/doc/book/using/using-credentials/#adding-new-global-credentials) The Jenkinsfile provided in this repo also expects several environment variables. The required environment variables must be configured under Global properties in System Configuration -> Configure System or provided as [parameters](https://wiki.jenkins.io/display/JENKINS/Parameterized+Build) when the pipeline runs. diff --git a/references/cicd-pipeline/package.json b/references/cicd-pipeline/package.json index 70e660c9a..fcc45e07e 100644 --- a/references/cicd-pipeline/package.json +++ b/references/cicd-pipeline/package.json @@ -6,7 +6,7 @@ "scripts": { "test": "npm run unit-test && npm run integration-test", "unit-test": "nyc --reporter=html mocha --recursive --timeout 5000 \"./test/unit/*.js\"", - "integration-test": "cucumber-js ./test/integration", + "integration-test": "cucumber-js --publish-quiet ./test/integration", "lint": "npm run eslint && npm run apigeelint", "eslint": "eslint --format html .", "apigeelint": "apigeelint -s ./apiproxy -f html.js -e PO025,PO013" diff --git a/references/cicd-pipeline/pom.xml b/references/cicd-pipeline/pom.xml index f8d689fa4..d2274050f 100644 --- a/references/cicd-pipeline/pom.xml +++ b/references/cicd-pipeline/pom.xml @@ -54,6 +54,8 @@ limitations under the License. ${org} ${env} n/a + update + resources/edge @@ -61,7 +63,8 @@ limitations under the License. apigeeapi - 1.3.2 + 1.3.3 + 1.5.3 https://api.enterprise.apigee.com oauth ${username} @@ -72,7 +75,8 @@ limitations under the License. googleapi - 2.2.2 + 2.3.1 + 2.3.0 https://apigee.googleapis.com ${token} ${sa} @@ -112,6 +116,7 @@ limitations under the License. true apiproxy/** + sharedflowbundle/** test/integration/** resources/** @@ -159,6 +164,92 @@ limitations under the License. + + com.apigee.edge.config + apigee-config-maven-plugin + ${apigee.config-plugin.version} + + + + create-config-references + install + + references + + + + create-config-keystores + install + + keystores + + + + create-config-aliases + install + + aliases + + + + create-config-targetserver + install + + targetservers + + + + create-config-kvm + install + + keyvaluemaps + + + + create-config-resourcefiles + install + + resourcefiles + + + + create-config-apiproduct + install + + apiproducts + + + + create-config-developer + install + + developers + + + + create-config-app + install + + apps + + + + create-config-reports + install + + reports + + + + create-config-flowhooks + install + + flowhooks + + + + + io.apigee.build-tools.enterprise4g apigee-edge-maven-plugin diff --git a/references/cicd-pipeline/resources/edge/org/developers.json b/references/cicd-pipeline/resources/edge/org/developers.json new file mode 100644 index 000000000..f83c88902 --- /dev/null +++ b/references/cicd-pipeline/resources/edge/org/developers.json @@ -0,0 +1,9 @@ +[ + { + "email": "charlie-cicd@example.com", + "firstName": "Charlie", + "lastName": "CICD", + "userName": "charlie", + "developerId": "7b964c84-25a5-436d-b401-4226906a26d7" + } +] From d1c1be56fc7d2f51ef5a31f12fd180d9d61f015e Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Thu, 4 Aug 2022 09:21:05 -0500 Subject: [PATCH 165/562] Added apigee-envoy-quickstart tool --- CODEOWNERS | 1 + tools/apigee-envoy-quickstart/README.md | 147 +++++++++++++++++ tools/apigee-envoy-quickstart/aekitctl.sh | 149 ++++++++++++++++++ .../assets/istio-apigee-envoy.png | Bin 0 -> 200153 bytes .../standalone-apigee-envoy-opdk-edge.png | Bin 0 -> 711518 bytes .../assets/standalone-apigee-envoy.png | Bin 0 -> 203699 bytes .../istio-apigee-envoy-install.sh | 43 +++++ tools/apigee-envoy-quickstart/pipeline.sh | 38 +++++ .../scripts/delete-apigee-envoy-setup.sh | 61 +++++++ .../scripts/download-libraries.sh | 41 +++++ .../scripts/prepare-namespace.sh | 32 ++++ .../scripts/service-accounts.sh | 31 ++++ .../scripts/setup-apigee.sh | 103 ++++++++++++ .../scripts/setup-envoy-filters.sh | 22 +++ .../scripts/setup-istio-envoy.sh | 64 ++++++++ .../scripts/setup-libraries.sh | 74 +++++++++ .../scripts/setup-standalone-envoy.sh | 95 +++++++++++ .../scripts/test-istio-apigee-envoy-filter.sh | 71 +++++++++ .../test-standalone-apigee-envoy-filter.sh | 94 +++++++++++ .../scripts/validate-new-gen-setup.sh | 64 ++++++++ .../scripts/validate-opdk-edge-setup.sh | 44 ++++++ .../scripts/validate.sh | 48 ++++++ .../standalone-apigee-envoy-install.sh | 42 +++++ 23 files changed, 1264 insertions(+) create mode 100644 tools/apigee-envoy-quickstart/README.md create mode 100755 tools/apigee-envoy-quickstart/aekitctl.sh create mode 100644 tools/apigee-envoy-quickstart/assets/istio-apigee-envoy.png create mode 100644 tools/apigee-envoy-quickstart/assets/standalone-apigee-envoy-opdk-edge.png create mode 100644 tools/apigee-envoy-quickstart/assets/standalone-apigee-envoy.png create mode 100755 tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh create mode 100755 tools/apigee-envoy-quickstart/pipeline.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/download-libraries.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/service-accounts.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/setup-apigee.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/setup-libraries.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh create mode 100755 tools/apigee-envoy-quickstart/scripts/validate.sh create mode 100755 tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh diff --git a/CODEOWNERS b/CODEOWNERS index f310e9e3d..af12aefc1 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -34,3 +34,4 @@ /tools/pipeline-linter @seymen @danistrebel /tools/pipeline-runner @seymen @danistrebel /tools/sf-dependency-list @yuriylesyuk +/tools/apigee-envoy-quickstart @ganadurai diff --git a/tools/apigee-envoy-quickstart/README.md b/tools/apigee-envoy-quickstart/README.md new file mode 100644 index 000000000..85304aeb4 --- /dev/null +++ b/tools/apigee-envoy-quickstart/README.md @@ -0,0 +1,147 @@ +# Apigee Envoy Quickstart Toolkit + +The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapters. +

+## Quickstart +
+ +[Apigee protected ASM Envoy Proxies within Kubernetes Engine](https://cloud.google.com/apigee/docs/api-platform/envoy-adapter/v2.0.x/example-hybrid). + +![poc-setup](assets/istio-apigee-envoy.png) + +[Apigee protected Envoy Proxies in docker containers](https://cloud.google.com/apigee/docs/api-platform/envoy-adapter/v2.0.x/example-apigee). + +![poc-setup](assets/standalone-apigee-envoy.png) + +### Installation - X/Hybrid platform + +1. **[Create a Google Cloud Project](https://cloud.google.com/resource-manager/docs/creating-managing-projects)** and connect it to an existing Billing account. + +1. **(For the Kubernetes environment demo) Setup a GKE cluster. Have the cluster enabled with Anthos Service Mesh. Checkout this **[gke poc toolkit](https://github.com/GoogleCloudPlatform/gke-poc-toolkit)** to standup a GKE cluster via automation with ASM enabled.** + +1. **This toolkit is validated in a Linux environment. Needed libraries : wget, jq.** + +1. **If your GKE cluster is version 1.25+ follow this **[link](https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke)** for enabling required changes for kubectl authentication** + +1. **The GCP Apigee project should be enabled for service-account key generation.** + +1. **Set your GCP Project ID, Apigee platform environment variables.** + ```bash + export PROJECT_ID= + export CLUSTER_NAME= + export CLUSTER_LOCATION= + export APIGEE_PROJECT_ID= + export APIGEE_X_ORG= + export APIGEE_X_ENV= + export APIGEE_X_HOSTNAME= + export APIGEE_REMOTE_SRVC_CLI_VERSION= + export APIGEE_REMOTE_SRVC_ENVOY_VERSION= + ``` + Latest cli version can be found **[here](https://github.com/apigee/apigee-remote-service-cli/releases/tag/v2.0.5)**
+ Latest apigee-envoy version can be found **[here](https://github.com/apigee/apigee-remote-service-envoy/releases/tag/v2.0.5)** + +1. **Set up local authentication to your project.** + ```bash + gcloud config set project $PROJECT_ID + gcloud auth application-default login --no-launch-browser + + export TOKEN=$(gcloud auth print-access-token);echo $TOKEN + ``` + +1. **Download the Apigee Envoy PoC Toolkit binary.** + ```bash + mkdir apigee-envoy-toolkit && cd "$_" + export ENVOY_HOME=$(pwd) + wget -O apigee-envoy-quickstart-main.zip https://github.com/ganadurai/apigee-envoy-quickstart/archive/refs/heads/main.zip + unzip apigee-envoy-quickstart-main.zip + ``` + +1. **Run to install the quickstart toolkit.** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type --action install + ``` + type (valid values):
+ istio-apigee-envoy
+ standalone-apigee-envoy + +1. **On successful run, it displays the commands (kubeclt run, curl) to validate the traffic intiated to the Envoy endpoints being protected by Apigee Adapter service.** + +#### Cleanup + +1. **Run to cleanup the PoC setup from the GKE and Apigee platform** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type --action delete + ``` + type (valid values):
+ istio-apigee-envoy
+ standalone-apigee-envoy + +

+ +### Installation - OPDK / Edge platform + +[Apigee protected Envoy Proxies in docker containers for OPDK platform](https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/example-edge). + +![poc-setup](assets/standalone-apigee-envoy-opdk-edge.png) + +1. **Set environment variables for OPDK.** + ```bash + export MGMT_HOST= + export APIGEE_USER= + export APIGEE_PASS= + export APIGEE_ORG= + export APIGEE_ENV= + export APIGEE_X_HOSTNAME= + export APIGEE_REMOTE_SRVC_CLI_VERSION= + export APIGEE_REMOTE_SRVC_ENVOY_VERSION= + ``` + +1. **Set environment variables for EDGE.** + ```bash + export MGMT_HOST= + export APIGEE_USER= + export APIGEE_PASS= + export APIGEE_ORG= + export APIGEE_ENV= + export APIGEE_REMOTE_SRVC_CLI_VERSION= + export APIGEE_REMOTE_SRVC_ENVOY_VERSION= + ``` + +1. **Download the Apigee Envoy PoC Toolkit binary.** + ```bash + mkdir apigee-envoy-toolkit && cd "$_" + export ENVOY_HOME=$(pwd) + wget -O apigee-envoy-quickstart-main.zip https://github.com/ganadurai/apigee-envoy-quickstart/archive/refs/heads/main.zip + unzip apigee-envoy-quickstart-main.zip + ``` + +1. **Run to install the quickstart toolkit for opdk.** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type standalone-apigee-envoy --action install --platform opdk + ``` + +1. **Run to install the quickstart toolkit for edge.** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type standalone-apigee-envoy --action install --platform edge + ``` + +1. **On successful run, it displays the commands (kubeclt run, curl) to validate the traffic intiated to the Envoy endpoints being protected by Apigee Adapter service.** + +### Cleanup + +1. **Run to cleanup the PoC setup from OPDK Apigee platform** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type standalone-apigee-envoy --action delete --platform opdk + ``` + +1. **Run to cleanup the PoC setup from Edge Apigee platform** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type standalone-apigee-envoy --action delete --platform edge + + diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh new file mode 100755 index 000000000..7040dbd94 --- /dev/null +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -0,0 +1,149 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +usage() { + echo -e "$*\n usage: $(basename "$0")" \ + "-t -a \n" \ + "example: $(basename "$0") -t istio-apigee-envoy -a install\n" \ + "example: $(basename "$0") -t istio-apigee-envoy -a delete\n" \ + "example: $(basename "$0") -t standalone-apigee-envoy -a install\n" \ + "example: $(basename "$0") -t standalone-apigee-envoy -a delete\n" \ + "Parameters:\n" \ + "-t --type : Apigee protected Envoy installation type, valida values 'istio-apigee-envoy'. 'standalone-apigee-envoy'\n" \ + "-a --action : Install or Delete action, valid values 'install', 'delete'\n" \ + "-p --platform : Standalone install for platform opdk or edge, valid values 'opdk', 'edge'\n" + exit 1 +} + +init() { + export CLUSTER_CTX="gke_${PROJECT_ID}_${CLUSTER_LOCATION}_${CLUSTER_NAME}" + export ENVOY_AX_SA="x-apigee-envoy-adapter-2-sa" + export CLI_HOME=$ENVOY_HOME/apigee-remote-service-cli + export REMOTE_SERVICE_HOME=$ENVOY_HOME/apigee-remote-service-envoy + export ENVOY_CONFIGS_HOME=$CLI_HOME/envoy-configs-and-samples + export AX_SERVICE_ACCOUNT=$ENVOY_HOME/$ENVOY_AX_SA.json + export NAMESPACE="apigee" + if [ "$PLATFORM" == 'edge' ]; then + export MGMT_HOST="https://api.enterprise.apigee.com" + fi +} + +createDir() { + + mkdir $CLI_HOME + mkdir $REMOTE_SERVICE_HOME + +} + +PARAMETERS=() + +if [[ $# -ne 4 && $# -ne 6 ]] +then + usage; + exit 1; +fi + +while [[ $# -gt 0 ]] +do + param="$1" + case $param in + -t|--type) + export INSTALL_TYPE="$2" + shift + shift + ;; + -a|--action) + export ACTION="$2" + shift + shift + ;; + -p|--platform) + export PLATFORM="$2" + shift + shift + ;; + *) + PARAMETERS+=("$1") + shift + ;; + esac +done + +if [[ -z $INSTALL_TYPE ]]; then + usage "installation type is a mandatory field" +fi + +if [[ -z $ACTION ]]; then + usage "action is a mandatory field" +fi + +if [ "$PLATFORM" != 'opdk' ] && [ "$PLATFORM" != 'edge' ] +then + gke-gcloud-auth-plugin --version 2>&1 >/dev/null + RESULT=$? + if [ $RESULT -eq 0 ]; then + export USE_GKE_GCLOUD_AUTH_PLUGIN=True + fi +fi + +init; + +if [ "$PLATFORM" == 'opdk' ] || [ "$PLATFORM" == 'edge' ] +then + export TOKEN=$(echo -n "$APIGEE_USER":"$APIGEE_PASS" | base64 | tr -d \\r) + export TOKEN_TYPE="Basic" +else + export TOKEN_TYPE="Bearer" + export MGMT_HOST="https://apigee.googleapis.com" +fi + +./scripts/validate.sh + +if [ "$PLATFORM" == 'opdk' ] || [ "$PLATFORM" == 'edge' ] +then + ./scripts/validate-opdk-edge-setup.sh +else + ./scripts/validate-new-gen-setup.sh + export APIGEE_ORG=$APIGEE_X_ORG + export APIGEE_ENV=$APIGEE_X_ENV +fi + +if [ $INSTALL_TYPE == 'istio-apigee-envoy' -a $ACTION == 'install' ] +then + createDir; + echo "Installing istio-apigee-envoy" + export TEMPLATE="istio-1.12" + ./istio-apigee-envoy-install.sh +elif [ $INSTALL_TYPE == 'istio-apigee-envoy' -a $ACTION == 'delete' ] +then + echo "Deleting istio-apigee-envoy" + ./scripts/delete-apigee-envoy-setup.sh +elif [ $INSTALL_TYPE == 'standalone-apigee-envoy' -a $ACTION == 'install' ] +then + createDir; + echo "Installing standalone-apigee-envoy" + export TEMPLATE="envoy-1.15" + ./standalone-apigee-envoy-install.sh +elif [ $INSTALL_TYPE == 'standalone-apigee-envoy' -a $ACTION == 'delete' ] +then + echo "Deleting standalone-apigee-envoy" + ./scripts/delete-apigee-envoy-setup.sh +else + usage; + exit 1; +fi diff --git a/tools/apigee-envoy-quickstart/assets/istio-apigee-envoy.png b/tools/apigee-envoy-quickstart/assets/istio-apigee-envoy.png new file mode 100644 index 0000000000000000000000000000000000000000..fccbe5af3c55910db6467a0e3754afab7059bbf9 GIT binary patch literal 200153 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 J=#H`P{{d>P4yynF literal 0 HcmV?d00001 diff --git a/tools/apigee-envoy-quickstart/assets/standalone-apigee-envoy-opdk-edge.png b/tools/apigee-envoy-quickstart/assets/standalone-apigee-envoy-opdk-edge.png new file mode 100644 index 0000000000000000000000000000000000000000..daf0d2a6e78da2e07fc48d3eb56fa05148b9b1df GIT binary patch literal 711518 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

hpb)AWl$LGg%;vj|kOW~AFJs)Jk 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� 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

hCJte(9T37dgqrkYOuqL@Q^#xgDEpsHBU^q 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∨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 JDLw3V;lJ`zLFxbi literal 0 HcmV?d00001 diff --git a/tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh b/tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh new file mode 100755 index 000000000..8a5292e67 --- /dev/null +++ b/tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +echo "Installing apigee istio envoy PoC setup" + +printf "\n\nstep 1 : service-accounts.sh\n" +./scripts/service-accounts.sh + +printf "\n\nstep 2 : prepare-namespace.sh\n" +./scripts/prepare-namespace.sh + +printf "\n\nstep 3 : download-libraries.sh\n" +./scripts/download-libraries.sh + +printf "\n\nstep 4 : setup-libraries.sh\n" +./scripts/setup-libraries.sh + +printf "\n\nstep 5 : setup-istio-envoy.sh\n" +./scripts/setup-istio-envoy.sh + +printf "\n\nstep 6 : setup-apigee.sh\n" +./scripts/setup-apigee.sh + +printf "\n\nstep 7 : setup-envoy-filters.sh\n" +./scripts/setup-envoy-filters.sh + +printf "\n\nstep 8 : test-apigee-envoy-filter.sh\n" +./scripts/test-istio-apigee-envoy-filter.sh diff --git a/tools/apigee-envoy-quickstart/pipeline.sh b/tools/apigee-envoy-quickstart/pipeline.sh new file mode 100755 index 000000000..0d96ac844 --- /dev/null +++ b/tools/apigee-envoy-quickstart/pipeline.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +export ENVOY_HOME=/home + +export PIPELINE_TEST="true" + +export APIGEE_REMOTE_SRVC_CLI_VERSION=2.0.5 +export APIGEE_REMOTE_SRVC_ENVOY_VERSION=2.0.5 + +printf "Running edge envoy cleanup" +./aekitctl.sh --type standalone-apigee-envoy --action delete --platform edge + +printf "Running edge envoy setup" +./aekitctl.sh --type standalone-apigee-envoy --action install --platform edge + +printf "Running edge envoy cleanup" +./aekitctl.sh --type standalone-apigee-envoy --action delete --platform edge + + + + + + + diff --git a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh new file mode 100755 index 000000000..5ebdae1d0 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if [ $INSTALL_TYPE == 'istio-apigee-envoy' ] +then + gcloud --project=${PROJECT_ID} container clusters get-credentials \ + ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION} + + echo "Deleting the namespace - "$NAMESPACE + kubectl --context=${CLUSTER_CTX} delete namespace $NAMESPACE + + echo "Deleting the service account role binding" + gcloud projects remove-iam-policy-binding $APIGEE_PROJECT_ID \ + --member="serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \ + --role="roles/apigee.analyticsAgent" + + echo "Deleting the service account" + gcloud iam service-accounts delete $ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com \ + --project=$APIGEE_PROJECT_ID --quiet + + rm $ENVOY_HOME/$AX_SERVICE_ACCOUNT +fi + +if [ $INSTALL_TYPE == 'standalone-apigee-envoy' ] +then + echo "Deleting docker containers" + docker ps -a --format "{{ json . }}" | jq ' select( .Image | contains("envoyproxy")) | .Names ' | xargs docker rm -f + docker ps -a --format "{{ json . }}" | jq ' select( .Image | contains("apigee-envoy-adapter")) | .Names ' | xargs docker rm -f +fi + +echo "Deleting the developer app" +curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -X DELETE "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com/apps/envoy-adapter-app-2" + +echo "Deleting the developer" +curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -X DELETE "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com" + +echo "Deleting the product" +curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -X DELETE "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/apiproducts/envoy-adapter-product-2" + + +echo "Deleting the directory" +rm -Rf $CLI_HOME +rm -Rf $REMOTE_SERVICE_HOME +if [ "$PLATFORM" != 'opdk' ] && [ "$PLATFORM" != 'edge' ]; then + rm $ENVOY_HOME/*-sa.json +fi +rm $ENVOY_HOME/*.tar.* + diff --git a/tools/apigee-envoy-quickstart/scripts/download-libraries.sh b/tools/apigee-envoy-quickstart/scripts/download-libraries.sh new file mode 100755 index 000000000..5697c3290 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/download-libraries.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +echo "Downloading required libraries from Apigee to configure Envoy adapter" + +cd $ENVOY_HOME + + +wget https://github.com/apigee/apigee-remote-service-cli/releases/download/v${APIGEE_REMOTE_SRVC_CLI_VERSION}/apigee-remote-service-cli_${APIGEE_REMOTE_SRVC_CLI_VERSION}_linux_64-bit.tar.gz \ +>/dev/null +RESULT=$? +if [ $RESULT -ne 0 ]; then + echo "please verify the version number provided for /apigee-remote-service-cli" + exit 1 +fi + +wget https://github.com/apigee/apigee-remote-service-envoy/releases/download/v${APIGEE_REMOTE_SRVC_ENVOY_VERSION}/apigee-remote-service-envoy_${APIGEE_REMOTE_SRVC_ENVOY_VERSION}_linux_64-bit.tar.gz \ +>/dev/null +RESULT=$? +if [ $RESULT -ne 0 ]; then + echo "please verify the version number provided for apigee-remote-service-envoy" + exit 1 +fi + +tar -xf apigee-remote-service-cli_${APIGEE_REMOTE_SRVC_CLI_VERSION}_linux_64-bit.tar.gz \ +-C apigee-remote-service-cli +tar -xf apigee-remote-service-envoy_${APIGEE_REMOTE_SRVC_ENVOY_VERSION}_linux_64-bit.tar.gz \ +-C apigee-remote-service-envoy diff --git a/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh b/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh new file mode 100755 index 000000000..067c3cde0 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +gcloud --project=${PROJECT_ID} container clusters get-credentials \ +${CLUSTER_NAME} --zone ${CLUSTER_LOCATION} + +cat <>apigee-ns.yaml +apiVersion: v1 +kind: Namespace +metadata: + name: apigee + +EOF + +kubectl --context=${CLUSTER_CTX} apply -f apigee-ns.yaml + +kubectl --context=${CLUSTER_CTX} label namespace apigee istio-injection- istio.io/rev=asm-managed --overwrite + +rm apigee-ns.yaml diff --git a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh new file mode 100755 index 000000000..bd0fc446f --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +gcloud iam service-accounts create $ENVOY_AX_SA \ +--project=$APIGEE_PROJECT_ID + +gcloud projects add-iam-policy-binding $APIGEE_PROJECT_ID --member \ +"serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \--role "roles/apigee.analyticsAgent" + +gcloud projects get-iam-policy $APIGEE_PROJECT_ID --flatten="bindings[].members" \ +--format='table(bindings.role)' \ +--filter="bindings.members:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \ +| grep "roles/apigee.analyticsAgent" + +gcloud iam service-accounts keys create $AX_SERVICE_ACCOUNT \ +--project=$APIGEE_PROJECT_ID \ +--iam-account=$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com + diff --git a/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh new file mode 100755 index 000000000..147203f01 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +echo "Set up Apigee Product, for the endpoint targetted in K8s environment via Envoy proxy" + +if [ "$PLATFORM" == 'opdk' ] || [ "$PLATFORM" == 'edge' ] +then + curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -H "Content-Type:application/json" "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/apiproducts" -d \ + '{ + "name" : "envoy-adapter-product-2", + "displayName" : "envoy-adapter-product-2", + "approvalType" : "auto", + "attributes" : [ { + "name" : "access", + "value" : "public" + }, { + "name" : "apigee-remote-service-targets", + "value" : "httpbin.org" + } ], + "description" : "API Product for api proxies in Envoy", + "environments": [ + "'${APIGEE_ENV}'" + ], + "apiResources" : [ "/headers" ] + }' +else + curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -H "Content-Type:application/json" "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/apiproducts" -d \ + '{ + "name": "envoy-adapter-product-2", + "displayName": "envoy-adapter-product-2", + "approvalType": "auto", + "attributes": [ + { + "name": "access", + "value": "public" + } + ], + "description": "API Product for api proxies in Envoy", + "environments": [ + "'${APIGEE_ENV}'" + ], + "operationGroup": { + "operationConfigs": [ + { + "apiSource": "httpbin.apigee.svc.cluster.local", + "operations": [ + { + "resource": "/headers" + } + ], + "quota": {} + }, + { + "apiSource": "httpbin.org", + "operations": [ + { + "resource": "/headers" + } + ], + "quota": {} + } + ], + "operationConfigType": "remoteservice" + } + }' +fi + + +echo "Set up Apigee Developer" + +curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -H "Content-Type:application/json" "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers" -d \ + '{ + "email": "test-envoy@google.com", + "firstName": "Test", + "lastName": "Envoy", + "userName": "pocenvoystarter" + }' + +echo 'Set up developer app for the Product having the endpoint targetted in K8s environment via Envoy proxy' + +curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -H "Content-Type:application/json" "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com/apps" -d \ + '{ + "name":"envoy-adapter-app-2", + "apiProducts": [ + "envoy-adapter-product-2" + ] + }' + diff --git a/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh b/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh new file mode 100755 index 000000000..98807578e --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +cd $ENVOY_CONFIGS_HOME + +kubectl --context=${CLUSTER_CTX} apply -f request-authentication.yaml +kubectl --context=${CLUSTER_CTX} apply -f envoyfilter-sidecar.yaml diff --git a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh new file mode 100755 index 000000000..ea18eedf8 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +testHttpbin() { + printf "\n\nTesting the httpbin application\n" + kubectl --context=${CLUSTER_CTX} -n $NAMESPACE run -it --rm --image=curlimages/curl --restart=Never curl \ + --overrides='{ "apiVersion": "v1", "metadata": {"annotations": { "sidecar.istio.io/inject":"false" } } }' \ + -- curl -i httpbin.apigee.svc.cluster.local/headers | grep 200 \ + 2>&1 >/dev/null + RESULT=$? + return $RESULT +} + +echo "Fixing the generated yaml files to use the namespace user provided" + +kubectl --context=${CLUSTER_CTX} -n $NAMESPACE apply -f $CLI_HOME/config.yaml + +cd $ENVOY_CONFIGS_HOME +sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" $ENVOY_CONFIGS_HOME/httpbin.yaml +sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" $ENVOY_CONFIGS_HOME/request-authentication.yaml +sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" $ENVOY_CONFIGS_HOME/envoyfilter-sidecar.yaml + +kubectl --context=${CLUSTER_CTX} -n $NAMESPACE apply -f httpbin.yaml +kubectl --context=${CLUSTER_CTX} -n $NAMESPACE apply -f apigee-envoy-adapter.yaml + +#echo "Testing the sample application (httpbin) accessing via service endpoint." +#echo "Since the cluster is ASM enabled, all the requests targetted to service endpoints is prox'd thru Envoy sidecar proxy" +#echo "Without the Apigee Envoy service (Envoy Filter) is enabled, the requests to httpbin service is unprotected" + +testHttpbin; +RESULT=$? + +counter=0; +while [ $RESULT -ne 0 ] && [ $counter -lt 10 ]; do + printf "\nTrying the httpbin to be ready $counter out of 10\n" + testHttpbin; + RESULT=$? + sleep 5 + counter=$((counter+1)) +done + +if [ $RESULT -ne 0 ]; then + printf "Access to httpbin ClusterIP endpoint fails after 5 tries, pre-enabling of envoy filter that enforces Apigee authentication this test should succeed" + exit 1 +fi + + +printf "Successfully tested the sample httpbin application" + + + diff --git a/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh new file mode 100755 index 000000000..13ab47459 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +INSTALL_SCRIPTS_DIR=$(pwd) + +cd $CLI_HOME + +printf "\n\n\nProvisioning the apigee remote service\n" + +if [ "$PLATFORM" == 'opdk' ] +then + $CLI_HOME/apigee-remote-service-cli provision \ + --organization $APIGEE_ORG \ + --environment $APIGEE_ENV \ + --runtime $APIGEE_X_HOSTNAME \ + --management $MGMT_HOST \ + --username $APIGEE_USER \ + --password $APIGEE_PASS \ + --opdk --verbose > $CLI_HOME/config.yaml + + sed -i "s/ legacy_endpoint: true/ legacy_endpoint: true\n products:\n refresh_rate: 1m/g" $CLI_HOME/config.yaml +elif [ "$PLATFORM" == 'edge' ] +then + $CLI_HOME/apigee-remote-service-cli provision \ + --organization $APIGEE_ORG \ + --environment $APIGEE_ENV \ + --username $APIGEE_USER \ + --password $APIGEE_PASS \ + --legacy --verbose > $CLI_HOME/config.yaml + + sed -i "s/ legacy_endpoint: true/ legacy_endpoint: true\n products:\n refresh_rate: 1m/g" $CLI_HOME/config.yaml +else + $CLI_HOME/apigee-remote-service-cli provision \ + --organization $APIGEE_ORG \ + --environment $APIGEE_ENV \ + --runtime $APIGEE_X_HOSTNAME \ + --namespace $NAMESPACE \ + --analytics-sa $AX_SERVICE_ACCOUNT \ + --token $TOKEN > $CLI_HOME/config.yaml + + sed -i "s/ collection_interval: 10s/ collection_interval: 10s\n products:\n refresh_rate: 1m/g" $CLI_HOME/config.yaml +fi + +if [ "$PLATFORM" != 'edge' ] +then + curl -i -v $APIGEE_X_HOSTNAME/remote-token/certs | grep 200 2>&1 >/dev/null + RESULT=$? + if [ $RESULT -ne 0 ]; then + echo "FAILED : Not success in provisioning the apigee adapter proxies to the mgmt plane" + exit 1 + fi +fi + +printf "\n\n\nCreating the sample application, envoy-filter and apigee-adapter yaml files" +$CLI_HOME/apigee-remote-service-cli samples create -c ./config.yaml \ +--out $ENVOY_CONFIGS_HOME --template $TEMPLATE + + + diff --git a/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh new file mode 100755 index 000000000..71a06b193 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +chmod 644 $CLI_HOME/config.yaml + +sleep 5 + +if [[ -z $PIPELINE_TEST ]]; then + + nohup docker run \ + -v $CLI_HOME/config.yaml:/config.yaml \ + -p 5000:5000 google/apigee-envoy-adapter:v2.0.5 & + +else + echo "Creating Dockerfile to copy the config files for apigee-envoy-adapter" + + cat << EOF > "$ENVOY_HOME/Dockerfile-aekitctl" +FROM google/apigee-envoy-adapter:v2.0.5 +COPY ./apigee-remote-service-cli/config.yaml /config.yaml +EOF + + docker build -f "$ENVOY_HOME/Dockerfile-aekitctl" \ + -t apigee/devrel-apigee-envoy-adapter:latest "$ENVOY_HOME" + + rm "$ENVOY_HOME/Dockerfile-aekitctl" + + nohup docker run \ + -p 5000:5000 apigee/devrel-apigee-envoy-adapter:latest & + +fi + +echo "END of envoy-adapter....." + +docker ps -a + +sleep 5 + +mkdir $ENVOY_CONFIGS_HOME/logs + +chmod 777 $ENVOY_CONFIGS_HOME/logs + +cd $ENVOY_CONFIGS_HOME +sed -i "s/localhost/127.0.0.1/g" $ENVOY_CONFIGS_HOME/envoy-config.yaml + +chmod 644 $ENVOY_CONFIGS_HOME/envoy-config.yaml + +if [[ -z $PIPELINE_TEST ]]; then + + nohup docker run --net=host -v $ENVOY_CONFIGS_HOME/logs:/tmp/logs \ + -v $ENVOY_CONFIGS_HOME/envoy-config.yaml:/etc/envoy/envoy.yaml \ + -p 8080:8080 \ + --rm envoyproxy/envoy:v1.21-latest --log-path /tmp/logs/custom.log \ + -c /etc/envoy/envoy.yaml --log-level debug & + +else + echo "Creating Dockerfile to copy the config files for envoy" + cat << EOF > "$ENVOY_HOME/Dockerfile-aekitctl" +FROM envoyproxy/envoy:v1.21-latest +RUN apt-get update +RUN apt-get -y install curl +COPY ./apigee-remote-service-cli/envoy-configs-and-samples/envoy-config.yaml /etc/envoy/envoy.yaml +EOF + + docker build -f "$ENVOY_HOME/Dockerfile-aekitctl" \ + -t apigee/devrel-envoyproxy:latest "$ENVOY_HOME" + + rm "$ENVOY_HOME/Dockerfile-aekitctl" + + nohup docker run --net=host \ + -p 8080:8080 \ + --rm apigee/devrel-envoyproxy:latest \ + -c /etc/envoy/envoy.yaml \ + --log-path /tmp/custom.log \ + --log-level debug & + +fi + +sleep 5 + +docker ps -a diff --git a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh new file mode 100755 index 000000000..d5f7a533b --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +testHttpbin() { + RESULT=1 + OUTPUT=$(kubectl --context=${CLUSTER_CTX} -n $NAMESPACE run -it --rm --image=curlimages/curl \ + --restart=Never curl --overrides='{"apiVersion": "v1", "metadata": {"annotations":{"sidecar.istio.io/inject": "false"}}}' \ + -- curl -i httpbin.apigee.svc.cluster.local/headers -H "x-api-key: $CONSUMER_KEY" | grep 200) + printf $OUTPUT + if [[ "$OUTPUT" == *"200"* ]]; then + RESULT=0 + fi + return $RESULT +} + +printf "\nExtract the consumer key" + +export CONSUMER_KEY=$(curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ + -H "Content-Type:application/json" \ + "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com/apps/envoy-adapter-app-2" | \ + jq '.credentials[0].consumerKey'); \ + export CONSUMER_KEY=$(echo $CONSUMER_KEY|cut -d '"' -f 2); \ + printf "\n" && printf "\n" + +printf "\nWait for few minutes for the Envoy and Apigee adapter to have the setup completed. Then try the below command" + +printf "\n\n" + +echo kubectl --context=${CLUSTER_CTX} -n $NAMESPACE run -it --rm --image=curlimages/curl --restart=Never curl \ + --overrides=\'{\"apiVersion\":\"v1\", \"metadata\":{\"annotations\": { \"sidecar.istio.io/inject\":\"false\" } } }\' \ + -- curl -i httpbin.apigee.svc.cluster.local/headers -H "\"x-api-key: $CONSUMER_KEY\"" + +printf "\n" + +printf "\nTry with and without sending the x-api-key header: this proves the httpbin service is intercepted by the Envoy sidecar which has the Envoy filter configured to connect to Apigee adapter running as container that executes the key verification with the Apigee runtime" + +printf "\n" + +testHttpbin; +RESULT=$? + +counter=0; +while [ $RESULT -ne 0 ] $counter -lt 5 ]; do + printf "\n\nTesting the httpbin application $counter of 5\n" + sleep 20 + testHttpbin; + RESULT=$? + counter=$((counter+1)) +done + +if [ $RESULT -eq 0 ]; then + printf "\nValidation of the apigee envoy quickstart engine successful" +else + printf "\nValidation of the apigee envoy quickstart engine NOT successful" +fi + diff --git a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh new file mode 100755 index 000000000..d8b8294a3 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +testHttpbin() { + printf "\nTesting deployed envoy proxy with apigee adapter\n" + RESULT=1 + OUTPUT=$(curl -i http://localhost:8080/headers -H 'Host: httpbin.org' \ + -H "x-api-key: $CONSUMER_KEY" | grep HTTP) + printf "\n$OUTPUT" + if [[ "$OUTPUT" == *"200"* ]]; then + RESULT=0 + fi + return $RESULT +} + +testCIRunnerHttpbin() { + printf "\nTesting deployed envoy proxy with apigee adapter for CI runner build\n" + envoyproxy_cntnr_name=$(docker ps -a --format "{{ json . }}" | \ + jq ' select( .Image | contains("envoyproxy")) | .Names ' | \ + tr -d '"') + RESULT=1 + OUTPUT=$(docker exec -it $envoyproxy_cntnr_name curl -i http://localhost:8080/headers -H 'Host: httpbin.org' \ + -H "x-api-key: $CONSUMER_KEY" | grep HTTP) + printf "\n$OUTPUT" + if [[ "$OUTPUT" == *"200"* ]]; then + RESULT=0 + fi + return $RESULT +} + +printf "\nExtract the consumer key\n" + +export CONSUMER_KEY=$(curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ + -H "Content-Type:application/json" \ + "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com/apps/envoy-adapter-app-2" | \ + jq '.credentials[0].consumerKey'); \ + export CONSUMER_KEY=$(echo $CONSUMER_KEY|cut -d '"' -f 2); \ + echo "" && echo "" + +printf "\nWait for few minutes for the Envoy and Apigee adapter to have the setup completed. Then try the below command" + +printf "\n\n" + +echo curl -i http://localhost:8080/headers -H "\"Host: httpbin.org\"" \ +-H "\"x-api-key: $CONSUMER_KEY\"" + +printf "\n" + +printf "\nTry with and without sending the x-api-key header. This proves the httpbin target is protected by the Envoy container which has the Envoy filter configured to connect to Apigee adapter running as container that executes the key verification with the Apigee runtime\n" + + +printf "\nWaiting for envoy proxy to be ready.." +sleep 20 +printf "\nTesting envoy endpoint.." + +if [[ -z $PIPELINE_TEST ]]; then + testHttpbin; +else + testCIRunnerHttpbin +fi +RESULT=$? + +counter=0; +while [ $RESULT -ne 0 ] && [ $counter -lt 5 ]; do + printf "\n\nTesting the httpbin application $counter of 5\n" + sleep 20 + if [[ -z $PIPELINE_TEST ]]; then + testHttpbin; + else + testCIRunnerHttpbin + fi + RESULT=$? + counter=$((counter+1)) +done + +if [ $RESULT -eq 0 ]; then + printf "\nValidation of the apigee envoy quickstart engine successful\n" +else + printf "\nValidation of the apigee envoy quickstart engine NOT successful\n" +fi + diff --git a/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh new file mode 100755 index 000000000..911159815 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +if [[ -z $APIGEE_X_ORG ]]; then + echo "Environment variable APIGEE_X_ORG is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $APIGEE_X_ENV ]]; then + echo "Environment variable APIGEE_X_ENV is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $PROJECT_ID ]]; then + echo "Environment variable PROJECT_ID is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $CLUSTER_NAME ]]; then + echo "Environment variable CLUSTER_NAME is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $CLUSTER_LOCATION ]]; then + echo "Environment variable CLUSTER_LOCATION is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $APIGEE_PROJECT_ID ]]; then + echo "Environment variable APIGEE_PROJECT_ID is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $TOKEN ]]; then + echo "Environment variable TOKEN is not set, please checkout README.md" + exit 1 +fi + +#Validate the kubernetes cluster + +gcloud --project=${PROJECT_ID} container clusters list \ + --filter="name~${CLUSTER_NAME}" >/dev/null +RESULT=$? +if [ $RESULT -ne 0 ]; then + echo "please verify the provided values about GKE cluster" + exit 1 +fi + +echo "Validation istio params successful.." diff --git a/tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh b/tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh new file mode 100755 index 000000000..ba4c51a43 --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +if [[ -z $APIGEE_ORG ]]; then + echo "Environment variable APIGEE_ORG is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $APIGEE_ENV ]]; then + echo "Environment variable APIGEE_ENV is not set, please checkout README.md" + exit 1 +fi + +if [ "$PLATFORM" == 'opdk' ] && [[ -z $MGMT_HOST ]]; then + echo "Environment variable OPDK MGMT_HOST is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $APIGEE_USER ]]; then + echo "Environment variable OPDK user credential is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $APIGEE_PASS ]]; then + echo "Environment variable OPDK password credential is not set, please checkout README.md" + exit 1 +fi + +echo "Validation standalone params successful.." diff --git a/tools/apigee-envoy-quickstart/scripts/validate.sh b/tools/apigee-envoy-quickstart/scripts/validate.sh new file mode 100755 index 000000000..9a4789f8d --- /dev/null +++ b/tools/apigee-envoy-quickstart/scripts/validate.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +if [ "$PLATFORM" != 'edge' ] && [[ -z $APIGEE_X_HOSTNAME ]]; then + echo "Environment variable APIGEE_X_HOSTNAME is not set, please checkout README.md" + exit 1 +fi + +if [[ -z $APIGEE_REMOTE_SRVC_CLI_VERSION ]]; then + echo "Environment variable APIGEE_REMOTE_SRVC_CLI_VERSION is not set, please checkout https://github.com/apigee/apigee-remote-service-cli/releases/latest" + exit 1 +fi + +if [[ -z $APIGEE_REMOTE_SRVC_ENVOY_VERSION ]]; then + echo "Environment variable APIGEE_REMOTE_SRVC_ENVOY_VERSION is not set, please checkout https://github.com/apigee/apigee-remote-service-envoy/releases/latest" + exit 1 +fi + +#Validate the Apigee org and env + +curl -i -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ +"${MGMT_HOST}/v1/organizations/${APIGEE_ORG}" \ +2>&1 >/dev/null +RESULT=$? +if [ $RESULT -ne 0 ]; then + echo "please verify the provided values about Apigee" + exit 1 +fi + +#Validate the Apigee virtualhost reachability +#TODO + +echo "Validation successful.." \ No newline at end of file diff --git a/tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh b/tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh new file mode 100755 index 000000000..a608d1ee9 --- /dev/null +++ b/tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +echo "Installing apigee standalone envoy PoC setup" + +if [ "$PLATFORM" == 'opdk' ] || [ "$PLATFORM" == 'edge' ] +then + printf "\n\nInstall against opdk/edge platform, skipping service account creation" +else + printf "\n\nstep 1 : service-accounts.sh\n" + ./scripts/service-accounts.sh +fi + +printf "\n\nstep 2 : download-libraries.sh\n" +./scripts/download-libraries.sh + +printf "\n\nstep 3 : setup-libraries.sh\n" +./scripts/setup-libraries.sh + +printf "\n\nstep 4 : setup-apigee.sh\n" +./scripts/setup-apigee.sh + +printf "\n\nstep 5 : setup-standalone-envoy.sh\n" +./scripts/setup-standalone-envoy.sh + +printf "\n\nstep 6 : test-standalone-apigee-envoy-filter.sh\n" +./scripts/test-standalone-apigee-envoy-filter.sh From 9e5f65acdefa1166032650645a1ec96e55197cc3 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Thu, 4 Aug 2022 11:03:56 -0500 Subject: [PATCH 166/562] Fixed README instructions --- tools/apigee-envoy-quickstart/README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/apigee-envoy-quickstart/README.md b/tools/apigee-envoy-quickstart/README.md index 85304aeb4..acdd3b00a 100644 --- a/tools/apigee-envoy-quickstart/README.md +++ b/tools/apigee-envoy-quickstart/README.md @@ -52,8 +52,11 @@ The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapte ```bash mkdir apigee-envoy-toolkit && cd "$_" export ENVOY_HOME=$(pwd) - wget -O apigee-envoy-quickstart-main.zip https://github.com/ganadurai/apigee-envoy-quickstart/archive/refs/heads/main.zip - unzip apigee-envoy-quickstart-main.zip + wget -O devrel.zip https://github.com/ganadurai/devrel/archive/refs/heads/main.zip + unzip devrel.zip + mv devrel-main apigee-devrel + rm devrel.zip + cd ${ENVOY_HOME}/apigee-devrel/tools/apigee-envoy-quickstart/ ``` 1. **Run to install the quickstart toolkit.** From d5946104f83268c88c6d23f8cb54b5b5d787a399 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Thu, 4 Aug 2022 11:05:27 -0500 Subject: [PATCH 167/562] Fixed README instructions --- tools/apigee-envoy-quickstart/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apigee-envoy-quickstart/README.md b/tools/apigee-envoy-quickstart/README.md index acdd3b00a..791405ff9 100644 --- a/tools/apigee-envoy-quickstart/README.md +++ b/tools/apigee-envoy-quickstart/README.md @@ -52,7 +52,7 @@ The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapte ```bash mkdir apigee-envoy-toolkit && cd "$_" export ENVOY_HOME=$(pwd) - wget -O devrel.zip https://github.com/ganadurai/devrel/archive/refs/heads/main.zip + wget -O devrel.zip https://github.com/apigee/devrel/archive/refs/heads/main.zip unzip devrel.zip mv devrel-main apigee-devrel rm devrel.zip From 8f7f16b0b2184574f1c1040571678aaebb05bcb9 Mon Sep 17 00:00:00 2001 From: Samrat Priyadarshi Date: Mon, 8 Aug 2022 11:30:38 +0000 Subject: [PATCH 168/562] feat: add support for opdk added new flag for opdk, basic authentication being used for opdk, list is working, code needs to be modified for export to work --- tools/apigee-sackmesser/bin/sackmesser | 10 +++++++++- tools/apigee-sackmesser/cmd/export/export.sh | 6 +++++- tools/apigee-sackmesser/cmd/list/list.sh | 7 ++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/tools/apigee-sackmesser/bin/sackmesser b/tools/apigee-sackmesser/bin/sackmesser index 670109bec..613a0de82 100755 --- a/tools/apigee-sackmesser/bin/sackmesser +++ b/tools/apigee-sackmesser/bin/sackmesser @@ -93,6 +93,7 @@ while [ "$#" -gt 0 ]; do -p) export password="$2"; shift 2;; -t) export token="$2"; shift 2;; -u) export username="$2"; shift 2;; + -k) export opdk="$2"; shift 2;; --async) export deploy_options="async"; shift 1;; --base-path) export base_path="${2}"; shift 2;; @@ -112,6 +113,7 @@ while [ "$#" -gt 0 ]; do --token) export token="${2}"; shift 2;; --username) export username="${2}"; shift 2;; --skip-config) export skip_config="T"; shift 1;; + --opdk) export opdk="$2"; shift 2;; --apigeeapi) export apiversion="apigee"; shift 1;; --googleapi) export apiversion="google"; shift 1;; @@ -141,12 +143,17 @@ else export baseuri=${baseuri:-api.enterprise.apigee.com} fi + + if [[ -z "$token" && (-z "$username" || -z "$password") ]]; then logfatal "required either -t (OAuth2 or GCP access token) or -u and -p (Edge username and password)" exit 1 fi -if [[ -z "$token" && "$apiversion" = "apigee" ]]; then +if [[ -z "$token" && "$apiversion" = "apigee" && "$opdk" = "yes" ]]; then + token=`echo -n $username:$password | base64` + export $token +elif [[ -z "$token" && "$apiversion" = "apigee" ]]; then if [ -z "$mfa" ]; then MFA=""; else MFA="?mfa_token=$mfa"; fi logdebug "Getting Apigee OAuth2 token for user $username" response=$(curl -fsS -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \ @@ -158,6 +165,7 @@ if [[ -z "$token" && "$apiversion" = "apigee" ]]; then --data "grant_type=password") token=$(echo "$response" | jq -r '.access_token') export token + echo "token from sackmesser: $token" elif [ "$apiversion" = "apigee" ]; then export token=${token:-$APIGEE_TOKEN} fi diff --git a/tools/apigee-sackmesser/cmd/export/export.sh b/tools/apigee-sackmesser/cmd/export/export.sh index 5033b99f8..77cc441fc 100755 --- a/tools/apigee-sackmesser/cmd/export/export.sh +++ b/tools/apigee-sackmesser/cmd/export/export.sh @@ -23,7 +23,11 @@ source "$SCRIPT_FOLDER/../../lib/logutils.sh" mgmtAPIDownload() { loginfo "Sackmesser export (zip) $1" - curl -fsS -H "Authorization: Bearer $token" "https://$baseuri/v1/$1" -o "$2" + if [ "$opdk" == "yes" ]; then + curl -fsS -u $username:$password -v "http://$baseuri/v1/$1" -o "$2" + else + curl -fsS -H "Authorization: Bearer $token" "https://$baseuri/v1/$1" -o "$2" + fi } urlencode() { diff --git a/tools/apigee-sackmesser/cmd/list/list.sh b/tools/apigee-sackmesser/cmd/list/list.sh index 24d2d17b2..1814f1bf6 100755 --- a/tools/apigee-sackmesser/cmd/list/list.sh +++ b/tools/apigee-sackmesser/cmd/list/list.sh @@ -50,4 +50,9 @@ elif [ "$apiversion" = "apigee" ]; then esac fi -curl -fsS -H "Authorization: Bearer $token" "https://$baseuri/v1/$partial_uri" | jq "$jq_pattern" +if [ "$opdk" == "yes" ]; then + token=`echo -n $username:$password | base64` + curl -fsS -H "Authorization: Basic $token" -v "http://$baseuri/v1/$partial_uri" | jq "$jq_pattern" #to do: logic for https +else + curl -fsS -H "Authorization: Bearer $token" "https://$baseuri/v1/$partial_uri" | jq "$jq_pattern" +fi \ No newline at end of file From f07067e67ec0c2990a134308ee8b1fbe74e67544 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 07:40:54 -0500 Subject: [PATCH 169/562] Fixes for comments from OmidTahouri --- tools/apigee-envoy-quickstart/README.md | 102 ++++++++++++++---- tools/apigee-envoy-quickstart/aekitctl.sh | 12 ++- .../scripts/validate-new-gen-setup.sh | 19 ++-- 3 files changed, 98 insertions(+), 35 deletions(-) diff --git a/tools/apigee-envoy-quickstart/README.md b/tools/apigee-envoy-quickstart/README.md index 791405ff9..6deb7b850 100644 --- a/tools/apigee-envoy-quickstart/README.md +++ b/tools/apigee-envoy-quickstart/README.md @@ -1,30 +1,28 @@ # Apigee Envoy Quickstart Toolkit The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapters. -

-## Quickstart + +## Envoy with Apigee adapter as containers within Kubernetes platform
[Apigee protected ASM Envoy Proxies within Kubernetes Engine](https://cloud.google.com/apigee/docs/api-platform/envoy-adapter/v2.0.x/example-hybrid). ![poc-setup](assets/istio-apigee-envoy.png) -[Apigee protected Envoy Proxies in docker containers](https://cloud.google.com/apigee/docs/api-platform/envoy-adapter/v2.0.x/example-apigee). - -![poc-setup](assets/standalone-apigee-envoy.png) - -### Installation - X/Hybrid platform +### Prerequisites 1. **[Create a Google Cloud Project](https://cloud.google.com/resource-manager/docs/creating-managing-projects)** and connect it to an existing Billing account. 1. **(For the Kubernetes environment demo) Setup a GKE cluster. Have the cluster enabled with Anthos Service Mesh. Checkout this **[gke poc toolkit](https://github.com/GoogleCloudPlatform/gke-poc-toolkit)** to standup a GKE cluster via automation with ASM enabled.** -1. **This toolkit is validated in a Linux environment. Needed libraries : wget, jq.** - 1. **If your GKE cluster is version 1.25+ follow this **[link](https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke)** for enabling required changes for kubectl authentication** 1. **The GCP Apigee project should be enabled for service-account key generation.** +1. **This toolkit is validated in a Linux environment. Needed libraries : wget, jq.** + +### Installation - X/Hybrid platform + 1. **Set your GCP Project ID, Apigee platform environment variables.** ```bash export PROJECT_ID= @@ -37,12 +35,72 @@ The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapte export APIGEE_REMOTE_SRVC_CLI_VERSION= export APIGEE_REMOTE_SRVC_ENVOY_VERSION= ``` + Latest cli version can be found **[here](https://github.com/apigee/apigee-remote-service-cli/releases/latest)**
+ Latest apigee-envoy version can be found **[here](https://github.com/apigee/apigee-remote-service-envoy/releases/latest)** + +1. **Set up local authentication to your project.** + ```bash + gcloud config set project $PROJECT_ID + gcloud auth application-default login --no-launch-browser + + export TOKEN=$(gcloud auth print-access-token) + ``` + +1. **Download the Apigee Envoy PoC Toolkit binary.** + ```bash + mkdir apigee-envoy-toolkit && cd "$_" + export ENVOY_HOME=$(pwd) + wget -O devrel.zip https://github.com/apigee/devrel/archive/refs/heads/main.zip + unzip devrel.zip + mv devrel-main apigee-devrel + rm devrel.zip + cd ${ENVOY_HOME}/apigee-devrel/tools/apigee-envoy-quickstart/ + ``` + +1. **Run to install the quickstart toolkit.** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type istio-apigee-envoy --action install + ``` + +1. **On successful run, it displays the commands (kubeclt run, curl) to validate the traffic intiated to the Envoy endpoints being protected by Apigee Adapter service.** + +### Cleanup +1. **Run to cleanup the PoC setup from the GKE and Apigee platform** + ```bash + cd ${ENVOY_HOME}/apigee-envoy-quickstart-main + ./aekitctl.sh --type istio-apigee-envoy --action delete + ``` + +## Envoy with Apigee adapter as native docker containers for Apigee X/Hybrid + +[Apigee protected Envoy Proxies in docker containers](https://cloud.google.com/apigee/docs/api-platform/envoy-adapter/v2.0.x/example-apigee). + +![poc-setup](assets/standalone-apigee-envoy.png) + +### Prerequisites + +1. **The GCP Apigee project should be enabled for service-account key generation.** + +1. **This toolkit is validated in a Linux environment. Needed libraries : wget, jq.** + +### Installation - X/Hybrid platform + +1. **Set your GCP Project ID, Apigee platform environment variables.** + ```bash + export APIGEE_PROJECT_ID= + export APIGEE_X_ORG= + export APIGEE_X_ENV= + export APIGEE_X_HOSTNAME= + export APIGEE_REMOTE_SRVC_CLI_VERSION= + export APIGEE_REMOTE_SRVC_ENVOY_VERSION= + ``` Latest cli version can be found **[here](https://github.com/apigee/apigee-remote-service-cli/releases/tag/v2.0.5)**
Latest apigee-envoy version can be found **[here](https://github.com/apigee/apigee-remote-service-envoy/releases/tag/v2.0.5)** 1. **Set up local authentication to your project.** ```bash - gcloud config set project $PROJECT_ID + gcloud config set project $APIGEE_PROJECT_ID gcloud auth application-default login --no-launch-browser export TOKEN=$(gcloud auth print-access-token);echo $TOKEN @@ -62,11 +120,8 @@ The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapte 1. **Run to install the quickstart toolkit.** ```bash cd ${ENVOY_HOME}/apigee-envoy-quickstart-main - ./aekitctl.sh --type --action install + ./aekitctl.sh --type standalone-apigee-envoy --action install ``` - type (valid values):
- istio-apigee-envoy
- standalone-apigee-envoy 1. **On successful run, it displays the commands (kubeclt run, curl) to validate the traffic intiated to the Envoy endpoints being protected by Apigee Adapter service.** @@ -75,20 +130,23 @@ The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapte 1. **Run to cleanup the PoC setup from the GKE and Apigee platform** ```bash cd ${ENVOY_HOME}/apigee-envoy-quickstart-main - ./aekitctl.sh --type --action delete + ./aekitctl.sh --type standalone-apigee-envoy --action delete ``` - type (valid values):
- istio-apigee-envoy
- standalone-apigee-envoy -

- -### Installation - OPDK / Edge platform +## Envoy with Apigee adapter as docker containers for OPDK/Edge [Apigee protected Envoy Proxies in docker containers for OPDK platform](https://docs.apigee.com/api-platform/envoy-adapter/v2.0.x/example-edge). ![poc-setup](assets/standalone-apigee-envoy-opdk-edge.png) +### Prerequisites + +1. **The GCP Apigee project should be enabled for service-account key generation.** + +1. **This toolkit is validated in a Linux environment. Needed libraries : wget, jq.** + +### Installation - OPDK / Edge platform + 1. **Set environment variables for OPDK.** ```bash export MGMT_HOST= @@ -96,7 +154,7 @@ The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapte export APIGEE_PASS= export APIGEE_ORG= export APIGEE_ENV= - export APIGEE_X_HOSTNAME= + export APIGEE_X_HOSTNAME= export APIGEE_REMOTE_SRVC_CLI_VERSION= export APIGEE_REMOTE_SRVC_ENVOY_VERSION= ``` diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh index 7040dbd94..aea667690 100755 --- a/tools/apigee-envoy-quickstart/aekitctl.sh +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -16,6 +16,9 @@ set -e +export ISTIO_TEMPLATE_VER="istio-1.12" +export STANDALONE_TEMPLATE_VER="envoy-1.15" + usage() { echo -e "$*\n usage: $(basename "$0")" \ "-t -a \n" \ @@ -41,13 +44,14 @@ init() { if [ "$PLATFORM" == 'edge' ]; then export MGMT_HOST="https://api.enterprise.apigee.com" fi + if [[ -z $PROJECT_ID ]] && [[ $INSTALL_TYPE == 'standalone-apigee-envoy' ]]; then + export PROJECT_ID=$APIGEE_PROJECT_ID; + fi } createDir() { - mkdir $CLI_HOME mkdir $REMOTE_SERVICE_HOME - } PARAMETERS=() @@ -127,7 +131,7 @@ if [ $INSTALL_TYPE == 'istio-apigee-envoy' -a $ACTION == 'install' ] then createDir; echo "Installing istio-apigee-envoy" - export TEMPLATE="istio-1.12" + export TEMPLATE=$ISTIO_TEMPLATE_VER ./istio-apigee-envoy-install.sh elif [ $INSTALL_TYPE == 'istio-apigee-envoy' -a $ACTION == 'delete' ] then @@ -137,7 +141,7 @@ elif [ $INSTALL_TYPE == 'standalone-apigee-envoy' -a $ACTION == 'install' ] then createDir; echo "Installing standalone-apigee-envoy" - export TEMPLATE="envoy-1.15" + export TEMPLATE=$STANDALONE_TEMPLATE_VER ./standalone-apigee-envoy-install.sh elif [ $INSTALL_TYPE == 'standalone-apigee-envoy' -a $ACTION == 'delete' ] then diff --git a/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh index 911159815..5c03c564b 100755 --- a/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh @@ -31,12 +31,12 @@ if [[ -z $PROJECT_ID ]]; then exit 1 fi -if [[ -z $CLUSTER_NAME ]]; then +if [[ -z $CLUSTER_NAME ]] && [[ $INSTALL_TYPE == 'istio-apigee-envoy' ]]; then echo "Environment variable CLUSTER_NAME is not set, please checkout README.md" exit 1 fi -if [[ -z $CLUSTER_LOCATION ]]; then +if [[ -z $CLUSTER_LOCATION ]] && [[ $INSTALL_TYPE == 'istio-apigee-envoy' ]]; then echo "Environment variable CLUSTER_LOCATION is not set, please checkout README.md" exit 1 fi @@ -51,14 +51,15 @@ if [[ -z $TOKEN ]]; then exit 1 fi -#Validate the kubernetes cluster - -gcloud --project=${PROJECT_ID} container clusters list \ +if [[ $INSTALL_TYPE == 'istio-apigee-envoy' ]]; then + #Validate the kubernetes cluster + gcloud --project=${PROJECT_ID} container clusters list \ --filter="name~${CLUSTER_NAME}" >/dev/null -RESULT=$? -if [ $RESULT -ne 0 ]; then - echo "please verify the provided values about GKE cluster" - exit 1 + RESULT=$? + if [ $RESULT -ne 0 ]; then + echo "please verify the provided values about GKE cluster" + exit 1 + fi fi echo "Validation istio params successful.." From 2f359d4348c9bfbe572e912a7fe6b9293359825a Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 07:42:15 -0500 Subject: [PATCH 170/562] Fixes for copyright to year 2022 --- tools/apigee-envoy-quickstart/aekitctl.sh | 2 +- tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh | 2 +- tools/apigee-envoy-quickstart/pipeline.sh | 2 +- .../scripts/delete-apigee-envoy-setup.sh | 2 +- tools/apigee-envoy-quickstart/scripts/download-libraries.sh | 2 +- tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh | 2 +- tools/apigee-envoy-quickstart/scripts/service-accounts.sh | 2 +- tools/apigee-envoy-quickstart/scripts/setup-apigee.sh | 2 +- tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh | 2 +- tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh | 2 +- tools/apigee-envoy-quickstart/scripts/setup-libraries.sh | 2 +- tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh | 2 +- .../scripts/test-istio-apigee-envoy-filter.sh | 2 +- .../scripts/test-standalone-apigee-envoy-filter.sh | 2 +- tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh | 2 +- .../apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh | 2 +- tools/apigee-envoy-quickstart/scripts/validate.sh | 2 +- .../apigee-envoy-quickstart/standalone-apigee-envoy-install.sh | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh index aea667690..9de59e33d 100755 --- a/tools/apigee-envoy-quickstart/aekitctl.sh +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh b/tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh index 8a5292e67..c93779124 100755 --- a/tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh +++ b/tools/apigee-envoy-quickstart/istio-apigee-envoy-install.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/pipeline.sh b/tools/apigee-envoy-quickstart/pipeline.sh index 0d96ac844..d31405108 100755 --- a/tools/apigee-envoy-quickstart/pipeline.sh +++ b/tools/apigee-envoy-quickstart/pipeline.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh index 5ebdae1d0..a88e52921 100755 --- a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/download-libraries.sh b/tools/apigee-envoy-quickstart/scripts/download-libraries.sh index 5697c3290..6840c7a9c 100755 --- a/tools/apigee-envoy-quickstart/scripts/download-libraries.sh +++ b/tools/apigee-envoy-quickstart/scripts/download-libraries.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh b/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh index 067c3cde0..1c58f9079 100755 --- a/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh +++ b/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh index bd0fc446f..fe6b80383 100755 --- a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh +++ b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh index 147203f01..d2cc906a0 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh b/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh index 98807578e..91195c38b 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh index ea18eedf8..8ad286d98 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh index 13ab47459..9c64c8c46 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh index 71a06b193..8b83ce1c9 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh index d5f7a533b..39affee7a 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh index d8b8294a3..7973f39c1 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh index 5c03c564b..5037ed22f 100755 --- a/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh b/tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh index ba4c51a43..045ea889e 100755 --- a/tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/validate-opdk-edge-setup.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/scripts/validate.sh b/tools/apigee-envoy-quickstart/scripts/validate.sh index 9a4789f8d..00053c18d 100755 --- a/tools/apigee-envoy-quickstart/scripts/validate.sh +++ b/tools/apigee-envoy-quickstart/scripts/validate.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh b/tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh index a608d1ee9..cf7a924f8 100755 --- a/tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh +++ b/tools/apigee-envoy-quickstart/standalone-apigee-envoy-install.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From a91f96ff4fc1ceddbc9c38dc9c8eeb16268e3de4 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 09:42:37 -0500 Subject: [PATCH 171/562] Fixes for dev/null output order --- README.md | 2 ++ tools/apigee-envoy-quickstart/aekitctl.sh | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cc4df62bf..432c313a7 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,8 @@ Apigee products. Specification - [Generate Shared Flows Dependency List](tools/sf-dependency-list) - A tool to generate topologically sorted Shared Flow dependencies. +- [Apigee Envoy Quickstart Toolkit](tools/apigee-envoy-quickstart) - + A tool to set up the sample deployments of Apigee Envoy. ## Labs diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh index 9de59e33d..1aa2d588c 100755 --- a/tools/apigee-envoy-quickstart/aekitctl.sh +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -50,8 +50,8 @@ init() { } createDir() { - mkdir $CLI_HOME - mkdir $REMOTE_SERVICE_HOME + mkdir "$CLI_HOME" + mkdir "$REMOTE_SERVICE_HOME" } PARAMETERS=() @@ -98,7 +98,7 @@ fi if [ "$PLATFORM" != 'opdk' ] && [ "$PLATFORM" != 'edge' ] then - gke-gcloud-auth-plugin --version 2>&1 >/dev/null + gke-gcloud-auth-plugin --version > /dev/null 2>&1 RESULT=$? if [ $RESULT -eq 0 ]; then export USE_GKE_GCLOUD_AUTH_PLUGIN=True From e787ba54f28883559c815f866ed0eaa3c99290be Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 09:46:30 -0500 Subject: [PATCH 172/562] Fixes for dev/null output order --- tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh | 3 +-- tools/apigee-envoy-quickstart/scripts/setup-libraries.sh | 2 +- tools/apigee-envoy-quickstart/scripts/validate.sh | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh index 8ad286d98..ec6c16c2a 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh @@ -18,8 +18,7 @@ testHttpbin() { printf "\n\nTesting the httpbin application\n" kubectl --context=${CLUSTER_CTX} -n $NAMESPACE run -it --rm --image=curlimages/curl --restart=Never curl \ --overrides='{ "apiVersion": "v1", "metadata": {"annotations": { "sidecar.istio.io/inject":"false" } } }' \ - -- curl -i httpbin.apigee.svc.cluster.local/headers | grep 200 \ - 2>&1 >/dev/null + -- curl -i httpbin.apigee.svc.cluster.local/headers | grep 200 > /dev/null 2>&1 RESULT=$? return $RESULT } diff --git a/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh index 9c64c8c46..7f36d0f60 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh @@ -58,7 +58,7 @@ fi if [ "$PLATFORM" != 'edge' ] then - curl -i -v $APIGEE_X_HOSTNAME/remote-token/certs | grep 200 2>&1 >/dev/null + curl -i -v $APIGEE_X_HOSTNAME/remote-token/certs | grep 200 > /dev/null 2>&1 RESULT=$? if [ $RESULT -ne 0 ]; then echo "FAILED : Not success in provisioning the apigee adapter proxies to the mgmt plane" diff --git a/tools/apigee-envoy-quickstart/scripts/validate.sh b/tools/apigee-envoy-quickstart/scripts/validate.sh index 00053c18d..ba51d8749 100755 --- a/tools/apigee-envoy-quickstart/scripts/validate.sh +++ b/tools/apigee-envoy-quickstart/scripts/validate.sh @@ -34,8 +34,7 @@ fi #Validate the Apigee org and env curl -i -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ -"${MGMT_HOST}/v1/organizations/${APIGEE_ORG}" \ -2>&1 >/dev/null +"${MGMT_HOST}/v1/organizations/${APIGEE_ORG}" > /dev/null 2>&1 RESULT=$? if [ $RESULT -ne 0 ]; then echo "please verify the provided values about Apigee" From b2adfdb5404b0dd5f87b13c75e9a1ce3a22e54b9 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 10:34:39 -0500 Subject: [PATCH 173/562] Fixes for variable with quotes --- tools/apigee-envoy-quickstart/aekitctl.sh | 15 ++++------ .../scripts/delete-apigee-envoy-setup.sh | 28 +++++++++---------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh index 1aa2d588c..d1c2fb6c7 100755 --- a/tools/apigee-envoy-quickstart/aekitctl.sh +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -109,7 +109,8 @@ init; if [ "$PLATFORM" == 'opdk' ] || [ "$PLATFORM" == 'edge' ] then - export TOKEN=$(echo -n "$APIGEE_USER":"$APIGEE_PASS" | base64 | tr -d \\r) + TOKEN=$(echo -n "$APIGEE_USER":"$APIGEE_PASS" | base64 | tr -d \\r) + export TOKEN; export TOKEN_TYPE="Basic" else export TOKEN_TYPE="Bearer" @@ -127,24 +128,20 @@ else export APIGEE_ENV=$APIGEE_X_ENV fi -if [ $INSTALL_TYPE == 'istio-apigee-envoy' -a $ACTION == 'install' ] -then +if [[ "$INSTALL_TYPE" == 'istio-apigee-envoy' ]] && [[ "$ACTION" == 'install' ]]; then createDir; echo "Installing istio-apigee-envoy" export TEMPLATE=$ISTIO_TEMPLATE_VER ./istio-apigee-envoy-install.sh -elif [ $INSTALL_TYPE == 'istio-apigee-envoy' -a $ACTION == 'delete' ] -then +elif [[ "$INSTALL_TYPE" == 'istio-apigee-envoy' ]] && [[ "$ACTION" == 'delete' ]]; then echo "Deleting istio-apigee-envoy" ./scripts/delete-apigee-envoy-setup.sh -elif [ $INSTALL_TYPE == 'standalone-apigee-envoy' -a $ACTION == 'install' ] -then +elif [ "$INSTALL_TYPE" == 'standalone-apigee-envoy' -a "$ACTION" == 'install' ]; then createDir; echo "Installing standalone-apigee-envoy" export TEMPLATE=$STANDALONE_TEMPLATE_VER ./standalone-apigee-envoy-install.sh -elif [ $INSTALL_TYPE == 'standalone-apigee-envoy' -a $ACTION == 'delete' ] -then +elif [[ "$INSTALL_TYPE" == 'standalone-apigee-envoy' ]] && [[ "$ACTION" == 'delete' ]]; then echo "Deleting standalone-apigee-envoy" ./scripts/delete-apigee-envoy-setup.sh else diff --git a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh index a88e52921..c0b150dc8 100755 --- a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh @@ -14,27 +14,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -if [ $INSTALL_TYPE == 'istio-apigee-envoy' ] +if [ "$INSTALL_TYPE" == 'istio-apigee-envoy' ] then - gcloud --project=${PROJECT_ID} container clusters get-credentials \ - ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION} + gcloud --project="${PROJECT_ID}" container clusters get-credentials \ + "${CLUSTER_NAME}" --zone "${CLUSTER_LOCATION}" - echo "Deleting the namespace - "$NAMESPACE - kubectl --context=${CLUSTER_CTX} delete namespace $NAMESPACE + echo "Deleting the namespace - $NAMESPACE" + kubectl --context="${CLUSTER_CTX}" delete namespace "$NAMESPACE" echo "Deleting the service account role binding" - gcloud projects remove-iam-policy-binding $APIGEE_PROJECT_ID \ + gcloud projects remove-iam-policy-binding "$APIGEE_PROJECT_ID" \ --member="serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.analyticsAgent" echo "Deleting the service account" - gcloud iam service-accounts delete $ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com \ - --project=$APIGEE_PROJECT_ID --quiet + gcloud iam service-accounts delete "$ENVOY_AX_SA"@"$APIGEE_PROJECT_ID".iam.gserviceaccount.com \ + --project="$APIGEE_PROJECT_ID" --quiet - rm $ENVOY_HOME/$AX_SERVICE_ACCOUNT + rm "$ENVOY_HOME"/"$AX_SERVICE_ACCOUNT" fi -if [ $INSTALL_TYPE == 'standalone-apigee-envoy' ] +if [ "$INSTALL_TYPE" == 'standalone-apigee-envoy' ] then echo "Deleting docker containers" docker ps -a --format "{{ json . }}" | jq ' select( .Image | contains("envoyproxy")) | .Names ' | xargs docker rm -f @@ -52,10 +52,10 @@ curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" -X DELETE "${MGMT_HOST}/v1/organ echo "Deleting the directory" -rm -Rf $CLI_HOME -rm -Rf $REMOTE_SERVICE_HOME +rm -Rf "$CLI_HOME" +rm -Rf "$REMOTE_SERVICE_HOME" if [ "$PLATFORM" != 'opdk' ] && [ "$PLATFORM" != 'edge' ]; then - rm $ENVOY_HOME/*-sa.json + rm "$ENVOY_HOME"/*-sa.json fi -rm $ENVOY_HOME/*.tar.* +rm "$ENVOY_HOME"/*.tar.* From baee2e8b5b5dffef5ca2cff27673e036e8032857 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 10:52:52 -0500 Subject: [PATCH 174/562] Fixes for variable with quotes --- .../scripts/download-libraries.sh | 11 +++++------ .../scripts/prepare-namespace.sh | 8 ++++---- .../scripts/service-accounts.sh | 16 ++++++++-------- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/download-libraries.sh b/tools/apigee-envoy-quickstart/scripts/download-libraries.sh index 6840c7a9c..0de763a57 100755 --- a/tools/apigee-envoy-quickstart/scripts/download-libraries.sh +++ b/tools/apigee-envoy-quickstart/scripts/download-libraries.sh @@ -16,10 +16,9 @@ echo "Downloading required libraries from Apigee to configure Envoy adapter" -cd $ENVOY_HOME +cd "$ENVOY_HOME" || exit - -wget https://github.com/apigee/apigee-remote-service-cli/releases/download/v${APIGEE_REMOTE_SRVC_CLI_VERSION}/apigee-remote-service-cli_${APIGEE_REMOTE_SRVC_CLI_VERSION}_linux_64-bit.tar.gz \ +wget https://github.com/apigee/apigee-remote-service-cli/releases/download/v"${APIGEE_REMOTE_SRVC_CLI_VERSION}"/apigee-remote-service-cli_"${APIGEE_REMOTE_SRVC_CLI_VERSION}"_linux_64-bit.tar.gz \ >/dev/null RESULT=$? if [ $RESULT -ne 0 ]; then @@ -27,7 +26,7 @@ if [ $RESULT -ne 0 ]; then exit 1 fi -wget https://github.com/apigee/apigee-remote-service-envoy/releases/download/v${APIGEE_REMOTE_SRVC_ENVOY_VERSION}/apigee-remote-service-envoy_${APIGEE_REMOTE_SRVC_ENVOY_VERSION}_linux_64-bit.tar.gz \ +wget https://github.com/apigee/apigee-remote-service-envoy/releases/download/v"${APIGEE_REMOTE_SRVC_ENVOY_VERSION}"/apigee-remote-service-envoy_"${APIGEE_REMOTE_SRVC_ENVOY_VERSION}"_linux_64-bit.tar.gz \ >/dev/null RESULT=$? if [ $RESULT -ne 0 ]; then @@ -35,7 +34,7 @@ if [ $RESULT -ne 0 ]; then exit 1 fi -tar -xf apigee-remote-service-cli_${APIGEE_REMOTE_SRVC_CLI_VERSION}_linux_64-bit.tar.gz \ +tar -xf apigee-remote-service-cli_"${APIGEE_REMOTE_SRVC_CLI_VERSION}"_linux_64-bit.tar.gz \ -C apigee-remote-service-cli -tar -xf apigee-remote-service-envoy_${APIGEE_REMOTE_SRVC_ENVOY_VERSION}_linux_64-bit.tar.gz \ +tar -xf apigee-remote-service-envoy_"${APIGEE_REMOTE_SRVC_ENVOY_VERSION}"_linux_64-bit.tar.gz \ -C apigee-remote-service-envoy diff --git a/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh b/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh index 1c58f9079..eecf35b0d 100755 --- a/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh +++ b/tools/apigee-envoy-quickstart/scripts/prepare-namespace.sh @@ -14,8 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -gcloud --project=${PROJECT_ID} container clusters get-credentials \ -${CLUSTER_NAME} --zone ${CLUSTER_LOCATION} +gcloud --project="${PROJECT_ID}" container clusters get-credentials \ +"${CLUSTER_NAME}" --zone "${CLUSTER_LOCATION}" cat <>apigee-ns.yaml apiVersion: v1 @@ -25,8 +25,8 @@ metadata: EOF -kubectl --context=${CLUSTER_CTX} apply -f apigee-ns.yaml +kubectl --context="${CLUSTER_CTX}" apply -f apigee-ns.yaml -kubectl --context=${CLUSTER_CTX} label namespace apigee istio-injection- istio.io/rev=asm-managed --overwrite +kubectl --context="${CLUSTER_CTX}" label namespace apigee istio-injection- istio.io/rev=asm-managed --overwrite rm apigee-ns.yaml diff --git a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh index fe6b80383..55a028c84 100755 --- a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh +++ b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh @@ -14,18 +14,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -gcloud iam service-accounts create $ENVOY_AX_SA \ ---project=$APIGEE_PROJECT_ID +gcloud iam service-accounts create "$ENVOY_AX_SA" \ +--project="$APIGEE_PROJECT_ID" -gcloud projects add-iam-policy-binding $APIGEE_PROJECT_ID --member \ -"serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \--role "roles/apigee.analyticsAgent" +gcloud projects add-iam-policy-binding "$APIGEE_PROJECT_ID" --member \ +"serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" --role "roles/apigee.analyticsAgent" -gcloud projects get-iam-policy $APIGEE_PROJECT_ID --flatten="bindings[].members" \ +gcloud projects get-iam-policy "$APIGEE_PROJECT_ID" --flatten="bindings[].members" \ --format='table(bindings.role)' \ --filter="bindings.members:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \ | grep "roles/apigee.analyticsAgent" -gcloud iam service-accounts keys create $AX_SERVICE_ACCOUNT \ ---project=$APIGEE_PROJECT_ID \ ---iam-account=$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com +gcloud iam service-accounts keys create "$AX_SERVICE_ACCOUNT" \ +--project="$APIGEE_PROJECT_ID" \ +--iam-account="$ENVOY_AX_SA"@"$APIGEE_PROJECT_ID".iam.gserviceaccount.com From fc52e236ec7487a26a86fc5f06feb44b2008f983 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 11:41:30 -0500 Subject: [PATCH 175/562] setup-istio-envoy.sh - lint fixes --- .../scripts/setup-apigee.sh | 4 ++-- .../scripts/setup-envoy-filters.sh | 6 +++--- .../scripts/setup-istio-envoy.sh | 18 +++++++++--------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh index d2cc906a0..ab6fc0733 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh @@ -34,7 +34,7 @@ then } ], "description" : "API Product for api proxies in Envoy", "environments": [ - "'${APIGEE_ENV}'" + "${APIGEE_ENV}" ], "apiResources" : [ "/headers" ] }' @@ -52,7 +52,7 @@ else ], "description": "API Product for api proxies in Envoy", "environments": [ - "'${APIGEE_ENV}'" + "${APIGEE_ENV}" ], "operationGroup": { "operationConfigs": [ diff --git a/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh b/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh index 91195c38b..fbdbbe7dd 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-envoy-filters.sh @@ -16,7 +16,7 @@ set -e -cd $ENVOY_CONFIGS_HOME +cd "$ENVOY_CONFIGS_HOME" -kubectl --context=${CLUSTER_CTX} apply -f request-authentication.yaml -kubectl --context=${CLUSTER_CTX} apply -f envoyfilter-sidecar.yaml +kubectl --context="${CLUSTER_CTX}" apply -f request-authentication.yaml +kubectl --context="${CLUSTER_CTX}" apply -f envoyfilter-sidecar.yaml diff --git a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh index ec6c16c2a..367d18c2e 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh @@ -16,7 +16,7 @@ testHttpbin() { printf "\n\nTesting the httpbin application\n" - kubectl --context=${CLUSTER_CTX} -n $NAMESPACE run -it --rm --image=curlimages/curl --restart=Never curl \ + kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" run -it --rm --image=curlimages/curl --restart=Never curl \ --overrides='{ "apiVersion": "v1", "metadata": {"annotations": { "sidecar.istio.io/inject":"false" } } }' \ -- curl -i httpbin.apigee.svc.cluster.local/headers | grep 200 > /dev/null 2>&1 RESULT=$? @@ -25,15 +25,15 @@ testHttpbin() { echo "Fixing the generated yaml files to use the namespace user provided" -kubectl --context=${CLUSTER_CTX} -n $NAMESPACE apply -f $CLI_HOME/config.yaml +kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" apply -f $CLI_HOME/config.yaml -cd $ENVOY_CONFIGS_HOME -sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" $ENVOY_CONFIGS_HOME/httpbin.yaml -sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" $ENVOY_CONFIGS_HOME/request-authentication.yaml -sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" $ENVOY_CONFIGS_HOME/envoyfilter-sidecar.yaml +cd "$ENVOY_CONFIGS_HOME" || exit +sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" "$ENVOY_CONFIGS_HOME"/httpbin.yaml +sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" "$ENVOY_CONFIGS_HOME"/request-authentication.yaml +sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" "$ENVOY_CONFIGS_HOME"/envoyfilter-sidecar.yaml -kubectl --context=${CLUSTER_CTX} -n $NAMESPACE apply -f httpbin.yaml -kubectl --context=${CLUSTER_CTX} -n $NAMESPACE apply -f apigee-envoy-adapter.yaml +kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" apply -f httpbin.yaml +kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" apply -f apigee-envoy-adapter.yaml #echo "Testing the sample application (httpbin) accessing via service endpoint." #echo "Since the cluster is ASM enabled, all the requests targetted to service endpoints is prox'd thru Envoy sidecar proxy" @@ -44,7 +44,7 @@ RESULT=$? counter=0; while [ $RESULT -ne 0 ] && [ $counter -lt 10 ]; do - printf "\nTrying the httpbin to be ready $counter out of 10\n" + printf "\nTrying the httpbin to be ready %s out of 10\n" "$counter" testHttpbin; RESULT=$? sleep 5 From 95dbd31de860830287fd77136e46aeb6c293045c Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 11:55:49 -0500 Subject: [PATCH 176/562] setup-libraries.sh - lint fixes --- .../scripts/setup-libraries.sh | 58 +++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh index 7f36d0f60..8d0c9b37b 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-libraries.sh @@ -16,49 +16,47 @@ set -e -INSTALL_SCRIPTS_DIR=$(pwd) - -cd $CLI_HOME +cd "$CLI_HOME" printf "\n\n\nProvisioning the apigee remote service\n" if [ "$PLATFORM" == 'opdk' ] then - $CLI_HOME/apigee-remote-service-cli provision \ - --organization $APIGEE_ORG \ - --environment $APIGEE_ENV \ - --runtime $APIGEE_X_HOSTNAME \ - --management $MGMT_HOST \ - --username $APIGEE_USER \ - --password $APIGEE_PASS \ - --opdk --verbose > $CLI_HOME/config.yaml + "$CLI_HOME"/apigee-remote-service-cli provision \ + --organization "$APIGEE_ORG" \ + --environment "$APIGEE_ENV" \ + --runtime "$APIGEE_X_HOSTNAME" \ + --management "$MGMT_HOST" \ + --username "$APIGEE_USER" \ + --password "$APIGEE_PASS" \ + --opdk --verbose > "$CLI_HOME"/config.yaml - sed -i "s/ legacy_endpoint: true/ legacy_endpoint: true\n products:\n refresh_rate: 1m/g" $CLI_HOME/config.yaml + sed -i "s/ legacy_endpoint: true/ legacy_endpoint: true\n products:\n refresh_rate: 1m/g" "$CLI_HOME"/config.yaml elif [ "$PLATFORM" == 'edge' ] then - $CLI_HOME/apigee-remote-service-cli provision \ - --organization $APIGEE_ORG \ - --environment $APIGEE_ENV \ - --username $APIGEE_USER \ - --password $APIGEE_PASS \ - --legacy --verbose > $CLI_HOME/config.yaml + "$CLI_HOME"/apigee-remote-service-cli provision \ + --organization "$APIGEE_ORG" \ + --environment "$APIGEE_ENV" \ + --username "$APIGEE_USER" \ + --password "$APIGEE_PASS" \ + --legacy --verbose > "$CLI_HOME"/config.yaml - sed -i "s/ legacy_endpoint: true/ legacy_endpoint: true\n products:\n refresh_rate: 1m/g" $CLI_HOME/config.yaml + sed -i "s/ legacy_endpoint: true/ legacy_endpoint: true\n products:\n refresh_rate: 1m/g" "$CLI_HOME"/config.yaml else - $CLI_HOME/apigee-remote-service-cli provision \ - --organization $APIGEE_ORG \ - --environment $APIGEE_ENV \ - --runtime $APIGEE_X_HOSTNAME \ - --namespace $NAMESPACE \ - --analytics-sa $AX_SERVICE_ACCOUNT \ - --token $TOKEN > $CLI_HOME/config.yaml + "$CLI_HOME"/apigee-remote-service-cli provision \ + --organization "$APIGEE_ORG" \ + --environment "$APIGEE_ENV" \ + --runtime "$APIGEE_X_HOSTNAME" \ + --namespace "$NAMESPACE" \ + --analytics-sa "$AX_SERVICE_ACCOUNT" \ + --token "$TOKEN" > "$CLI_HOME"/config.yaml - sed -i "s/ collection_interval: 10s/ collection_interval: 10s\n products:\n refresh_rate: 1m/g" $CLI_HOME/config.yaml + sed -i "s/ collection_interval: 10s/ collection_interval: 10s\n products:\n refresh_rate: 1m/g" "$CLI_HOME"/config.yaml fi if [ "$PLATFORM" != 'edge' ] then - curl -i -v $APIGEE_X_HOSTNAME/remote-token/certs | grep 200 > /dev/null 2>&1 + curl -i -v "$APIGEE_X_HOSTNAME"/remote-token/certs | grep 200 > /dev/null 2>&1 RESULT=$? if [ $RESULT -ne 0 ]; then echo "FAILED : Not success in provisioning the apigee adapter proxies to the mgmt plane" @@ -67,8 +65,8 @@ then fi printf "\n\n\nCreating the sample application, envoy-filter and apigee-adapter yaml files" -$CLI_HOME/apigee-remote-service-cli samples create -c ./config.yaml \ ---out $ENVOY_CONFIGS_HOME --template $TEMPLATE +"$CLI_HOME"/apigee-remote-service-cli samples create -c ./config.yaml \ +--out "$ENVOY_CONFIGS_HOME" --template "$TEMPLATE" From 64f9dcf662a6558dbf42ab1bdca79a2f676dd9f1 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 12:08:13 -0500 Subject: [PATCH 177/562] setup-standalone-envoy.sh - lint fixes --- tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh index 8b83ce1c9..762c47705 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh @@ -16,7 +16,7 @@ set -e -chmod 644 $CLI_HOME/config.yaml +chmod 644 "$CLI_HOME"/config.yaml sleep 5 From a5df963d8f0baedfa6a0d3d87c384573c8c73c2a Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 12:11:15 -0500 Subject: [PATCH 178/562] setup-standalone-envoy.sh - lint fixes --- .../scripts/setup-standalone-envoy.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh index 762c47705..803dfc2e4 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-standalone-envoy.sh @@ -23,7 +23,7 @@ sleep 5 if [[ -z $PIPELINE_TEST ]]; then nohup docker run \ - -v $CLI_HOME/config.yaml:/config.yaml \ + -v "$CLI_HOME"/config.yaml:/config.yaml \ -p 5000:5000 google/apigee-envoy-adapter:v2.0.5 & else @@ -50,19 +50,19 @@ docker ps -a sleep 5 -mkdir $ENVOY_CONFIGS_HOME/logs +mkdir "$ENVOY_CONFIGS_HOME"/logs -chmod 777 $ENVOY_CONFIGS_HOME/logs +chmod 777 "$ENVOY_CONFIGS_HOME"/logs -cd $ENVOY_CONFIGS_HOME -sed -i "s/localhost/127.0.0.1/g" $ENVOY_CONFIGS_HOME/envoy-config.yaml +cd "$ENVOY_CONFIGS_HOME" +sed -i "s/localhost/127.0.0.1/g" "$ENVOY_CONFIGS_HOME"/envoy-config.yaml -chmod 644 $ENVOY_CONFIGS_HOME/envoy-config.yaml +chmod 644 "$ENVOY_CONFIGS_HOME"/envoy-config.yaml if [[ -z $PIPELINE_TEST ]]; then - nohup docker run --net=host -v $ENVOY_CONFIGS_HOME/logs:/tmp/logs \ - -v $ENVOY_CONFIGS_HOME/envoy-config.yaml:/etc/envoy/envoy.yaml \ + nohup docker run --net=host -v "$ENVOY_CONFIGS_HOME"/logs:/tmp/logs \ + -v "$ENVOY_CONFIGS_HOME"/envoy-config.yaml:/etc/envoy/envoy.yaml \ -p 8080:8080 \ --rm envoyproxy/envoy:v1.21-latest --log-path /tmp/logs/custom.log \ -c /etc/envoy/envoy.yaml --log-level debug & From dbb44d1d86635a92f6523fd27f26ec737da93788 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 12:20:52 -0500 Subject: [PATCH 179/562] test-istio-apigee-envoy-filter.s - lint fixes --- .../scripts/test-istio-apigee-envoy-filter.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh index 39affee7a..d4fefab13 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh @@ -55,7 +55,7 @@ testHttpbin; RESULT=$? counter=0; -while [ $RESULT -ne 0 ] $counter -lt 5 ]; do +while [[ $RESULT -ne 0 ]] && [[ $counter -lt 5 ]]; do printf "\n\nTesting the httpbin application $counter of 5\n" sleep 20 testHttpbin; From e27fd5e87d0f836117e963c48c138dbfef5b4f47 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 12:33:42 -0500 Subject: [PATCH 180/562] test-standalone-apigee-envoy-filter.sh - lint fixes --- .../scripts/test-standalone-apigee-envoy-filter.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh index 7973f39c1..59bc5be3c 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh @@ -19,7 +19,7 @@ testHttpbin() { RESULT=1 OUTPUT=$(curl -i http://localhost:8080/headers -H 'Host: httpbin.org' \ -H "x-api-key: $CONSUMER_KEY" | grep HTTP) - printf "\n$OUTPUT" + printf "\n%s" "$OUTPUT" if [[ "$OUTPUT" == *"200"* ]]; then RESULT=0 fi @@ -32,9 +32,9 @@ testCIRunnerHttpbin() { jq ' select( .Image | contains("envoyproxy")) | .Names ' | \ tr -d '"') RESULT=1 - OUTPUT=$(docker exec -it $envoyproxy_cntnr_name curl -i http://localhost:8080/headers -H 'Host: httpbin.org' \ + OUTPUT=$(docker exec -it "$envoyproxy_cntnr_name" curl -i http://localhost:8080/headers -H 'Host: httpbin.org' \ -H "x-api-key: $CONSUMER_KEY" | grep HTTP) - printf "\n$OUTPUT" + printf "\n%s" "$OUTPUT" if [[ "$OUTPUT" == *"200"* ]]; then RESULT=0 fi @@ -43,12 +43,11 @@ testCIRunnerHttpbin() { printf "\nExtract the consumer key\n" -export CONSUMER_KEY=$(curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ +CONSUMER_KEY=$(curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ -H "Content-Type:application/json" \ "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com/apps/envoy-adapter-app-2" | \ - jq '.credentials[0].consumerKey'); \ - export CONSUMER_KEY=$(echo $CONSUMER_KEY|cut -d '"' -f 2); \ - echo "" && echo "" + jq '.credentials[0].consumerKey');CONSUMER_KEY=$(echo $CONSUMER_KEY|cut -d '"' -f 2) +export CONSUMER_KEY printf "\nWait for few minutes for the Envoy and Apigee adapter to have the setup completed. Then try the below command" From 443bc43148cdebe930f79d30e858d1933b750a05 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 12:33:48 -0500 Subject: [PATCH 181/562] test-standalone-apigee-envoy-filter.sh - lint fixes --- .../scripts/test-standalone-apigee-envoy-filter.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh index 59bc5be3c..2a7dad463 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh @@ -74,7 +74,7 @@ RESULT=$? counter=0; while [ $RESULT -ne 0 ] && [ $counter -lt 5 ]; do - printf "\n\nTesting the httpbin application $counter of 5\n" + printf "\n\nTesting the httpbin application %s of 5\n" "$counter" sleep 20 if [[ -z $PIPELINE_TEST ]]; then testHttpbin; From c0faa6cff1060ca7c63c02e9e8638a44944ee9f6 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 12:34:45 -0500 Subject: [PATCH 182/562] validate-new-gen-setup.sh - lint fixes --- tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh index 5037ed22f..8f4934ccd 100755 --- a/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/validate-new-gen-setup.sh @@ -53,7 +53,7 @@ fi if [[ $INSTALL_TYPE == 'istio-apigee-envoy' ]]; then #Validate the kubernetes cluster - gcloud --project=${PROJECT_ID} container clusters list \ + gcloud --project="${PROJECT_ID}" container clusters list \ --filter="name~${CLUSTER_NAME}" >/dev/null RESULT=$? if [ $RESULT -ne 0 ]; then From b965a5a44d89333fafcf4d00fb7f661f33cb553a Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 13:10:26 -0500 Subject: [PATCH 183/562] Fixes for README.md --- tools/apigee-envoy-quickstart/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/apigee-envoy-quickstart/README.md b/tools/apigee-envoy-quickstart/README.md index 6deb7b850..b4e709d3c 100644 --- a/tools/apigee-envoy-quickstart/README.md +++ b/tools/apigee-envoy-quickstart/README.md @@ -2,6 +2,10 @@ The Apigee Envoy Quickstart Toolkit sets up the Envoy proxies with Apigee adapters. +* [Envoy with Apigee adapter as containers within Kubernetes platform for Apigee X/Hybrid]() +* [Envoy with Apigee adapter as native docker containers for Apigee X/Hybrid]() +* [Envoy with Apigee adapter as docker containers for OPDK/Edge]() + ## Envoy with Apigee adapter as containers within Kubernetes platform
From bce9283abbf9599240ce0d16d12fc396c533caf2 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 8 Aug 2022 15:18:50 -0500 Subject: [PATCH 184/562] setup-apigee.sh - lint fixes --- tools/apigee-envoy-quickstart/scripts/setup-apigee.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh index ab6fc0733..cd16bcf4c 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-apigee.sh @@ -34,7 +34,7 @@ then } ], "description" : "API Product for api proxies in Envoy", "environments": [ - "${APIGEE_ENV}" + "'"${APIGEE_ENV}"'" ], "apiResources" : [ "/headers" ] }' @@ -52,7 +52,7 @@ else ], "description": "API Product for api proxies in Envoy", "environments": [ - "${APIGEE_ENV}" + "'"${APIGEE_ENV}"'" ], "operationGroup": { "operationConfigs": [ From a04ffbc0865749e6532711a523e46a3060f9e01e Mon Sep 17 00:00:00 2001 From: Samrat Priyadarshi Date: Tue, 9 Aug 2022 11:18:06 +0000 Subject: [PATCH 185/562] condition to check if apiproducts, developers, apps and improtKeys files exist --- tools/apigee-sackmesser/cmd/export/export.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/apigee-sackmesser/cmd/export/export.sh b/tools/apigee-sackmesser/cmd/export/export.sh index 77cc441fc..fe6bc558b 100755 --- a/tools/apigee-sackmesser/cmd/export/export.sh +++ b/tools/apigee-sackmesser/cmd/export/export.sh @@ -75,9 +75,11 @@ fi loginfo "Org Export to: $export_folder/config/resources/edge/org" mkdir -p "$export_folder/config/resources/edge/org" +echo "Create Temp Directory" mkdir -p "$export_folder/temp/developers" mkdir -p "$export_folder/temp/apps" mkdir -p "$export_folder/temp/importKeys" +echo "Temp Directory Created" sackmesser list "organizations/$organization/developers" | jq -r -c '.[]|.' | while read -r email; do loginfo "download developer: $email" @@ -109,16 +111,24 @@ sackmesser list "organizations/$organization/developers" | jq -r -c '.[]|.' | wh fi done +if ls "$export_folder/temp/developers"/*.json 1> /dev/null 2>&1; then jq -n '[inputs]' "$export_folder/temp/developers"/*.json > "$export_folder/config/resources/edge/org/developers.json" +fi +if ls "$export_folder/temp/apps"/*.json 1> /dev/null 2>&1; then jq -n '[inputs] | add' "$export_folder/temp/apps"/*.json > "$export_folder/config/resources/edge/org/developerApps.json" +fi +if ls "$export_folder/temp/importKeys"/*.json 1> /dev/null 2>&1; then jq -n '[inputs] | add' "$export_folder/temp/importKeys"/*.json > "$export_folder/config/resources/edge/org/importKeys.json" +fi mkdir -p "$export_folder/temp/apiproducts" sackmesser list "organizations/$organization/apiproducts" | jq -r -c '.[]|.' | while read -r product; do loginfo "download API product: $product" sackmesser list "organizations/$organization/apiproducts/$(urlencode "$product")" > "$export_folder/temp/apiproducts/$product".json done +if ls "$export_folder/temp/apiproducts"/*.json 1> /dev/null 2>&1; then jq -n '[inputs]' "$export_folder/temp/apiproducts"/*.json > "$export_folder/config/resources/edge/org/apiProducts.json" +fi mkdir -p "$export_folder/temp/keyvaluemaps" sackmesser list "organizations/$organization/keyvaluemaps" | jq -r -c '.[]|.' | while read -r kvmname; do From 7b703a1b4b2eca3ca3aa46d968fbe4b7f1153876 Mon Sep 17 00:00:00 2001 From: Samrat Priyadarshi Date: Wed, 10 Aug 2022 06:40:16 +0000 Subject: [PATCH 186/562] change README.md and remove echo comments from export.sh --- tools/apigee-sackmesser/README.md | 6 ++++-- tools/apigee-sackmesser/cmd/export/export.sh | 2 -- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/apigee-sackmesser/README.md b/tools/apigee-sackmesser/README.md index 397915cb0..a92308458 100644 --- a/tools/apigee-sackmesser/README.md +++ b/tools/apigee-sackmesser/README.md @@ -12,7 +12,8 @@ for interacting with the Apigee Management APIs for Apigee X/hybrid and Edge. It also lets you deploy API proxies, shared flows and configuration to both stacks without writing any additional manifest files. -Please note that Apigee Private Cloud (OPDK) is not yet supported at this time. +Please note that Apigee Private Cloud (OPDK) only supports list, export and report operations at this time. Support for other +operations would be added soon. For interacting with the management API of Apigee X/hybrid only (without the need for backwards compatibility for Apigee Edge) you can also try the [apigeecli](https://github.com/apigee/apigeecli) commandline utility. @@ -50,7 +51,7 @@ report Options: --googleapi (default), use apigee.googleapis.com (for X, hybrid) ---apigeeapi, use api.enterprise.apigee.com (for Edge) +--apigeeapi, use api.enterprise.apigee.com (for Edge), also set this flag if you are using OPDK -b,--base-path, overrides the default base path for the API proxy -d,--directory, path to the apiproxy or shared flow bundle to be deployed -e,--environment, Apigee environment name @@ -67,6 +68,7 @@ Options: --debug, show verbose debug output --deployment-sa, GCP Service Account to associate with the deployment (X,hybrid only) --description, Human friendly proxy or shared flow description +--opdk, Set it to yes if your are using OPDK --skip-config, Skip configuration in org export ``` diff --git a/tools/apigee-sackmesser/cmd/export/export.sh b/tools/apigee-sackmesser/cmd/export/export.sh index fe6bc558b..084484266 100755 --- a/tools/apigee-sackmesser/cmd/export/export.sh +++ b/tools/apigee-sackmesser/cmd/export/export.sh @@ -75,11 +75,9 @@ fi loginfo "Org Export to: $export_folder/config/resources/edge/org" mkdir -p "$export_folder/config/resources/edge/org" -echo "Create Temp Directory" mkdir -p "$export_folder/temp/developers" mkdir -p "$export_folder/temp/apps" mkdir -p "$export_folder/temp/importKeys" -echo "Temp Directory Created" sackmesser list "organizations/$organization/developers" | jq -r -c '.[]|.' | while read -r email; do loginfo "download developer: $email" From 22ff65733856a990f2e4ddd3ea6e065a918a85b8 Mon Sep 17 00:00:00 2001 From: Samrat Priyadarshi Date: Wed, 10 Aug 2022 07:41:56 +0000 Subject: [PATCH 187/562] add insecure flag functionality for OPDK --- tools/apigee-sackmesser/README.md | 3 ++- tools/apigee-sackmesser/bin/sackmesser | 12 ++++++------ tools/apigee-sackmesser/cmd/export/export.sh | 12 ++++++++++-- tools/apigee-sackmesser/cmd/list/list.sh | 9 +++++++-- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/tools/apigee-sackmesser/README.md b/tools/apigee-sackmesser/README.md index a92308458..96ca6545c 100644 --- a/tools/apigee-sackmesser/README.md +++ b/tools/apigee-sackmesser/README.md @@ -68,7 +68,8 @@ Options: --debug, show verbose debug output --deployment-sa, GCP Service Account to associate with the deployment (X,hybrid only) --description, Human friendly proxy or shared flow description ---opdk, Set it to yes if your are using OPDK +--insecure, set this flag if you are using OPDK and http endpoint for Management API +--opdk, set this flag if your are using OPDK --skip-config, Skip configuration in org export ``` diff --git a/tools/apigee-sackmesser/bin/sackmesser b/tools/apigee-sackmesser/bin/sackmesser index 613a0de82..573fd788d 100755 --- a/tools/apigee-sackmesser/bin/sackmesser +++ b/tools/apigee-sackmesser/bin/sackmesser @@ -53,6 +53,8 @@ Options: --debug, show verbose debug output --deployment-sa, GCP Service Account to associate with the deployment (X,hybrid only) --description, Human friendly proxy or shared flow description +--insecure, set this flag if you are using OPDK and http endpoint for Management API +--opdk, Set this flag if your are using OPDK --skip-config, Skip configuration in org export EOF } @@ -93,7 +95,6 @@ while [ "$#" -gt 0 ]; do -p) export password="$2"; shift 2;; -t) export token="$2"; shift 2;; -u) export username="$2"; shift 2;; - -k) export opdk="$2"; shift 2;; --async) export deploy_options="async"; shift 1;; --base-path) export base_path="${2}"; shift 2;; @@ -113,7 +114,8 @@ while [ "$#" -gt 0 ]; do --token) export token="${2}"; shift 2;; --username) export username="${2}"; shift 2;; --skip-config) export skip_config="T"; shift 1;; - --opdk) export opdk="$2"; shift 2;; + --opdk) export opdk="T"; shift 1;; + --insecure) export insecure="T"; shift 1;; --apigeeapi) export apiversion="apigee"; shift 1;; --googleapi) export apiversion="google"; shift 1;; @@ -143,14 +145,13 @@ else export baseuri=${baseuri:-api.enterprise.apigee.com} fi - - if [[ -z "$token" && (-z "$username" || -z "$password") ]]; then logfatal "required either -t (OAuth2 or GCP access token) or -u and -p (Edge username and password)" exit 1 fi -if [[ -z "$token" && "$apiversion" = "apigee" && "$opdk" = "yes" ]]; then +if [[ -z "$token" && "$apiversion" = "apigee" && "$opdk" = "T" ]]; then + logdebug "Getting Apigee Basic token for user $username" token=`echo -n $username:$password | base64` export $token elif [[ -z "$token" && "$apiversion" = "apigee" ]]; then @@ -165,7 +166,6 @@ elif [[ -z "$token" && "$apiversion" = "apigee" ]]; then --data "grant_type=password") token=$(echo "$response" | jq -r '.access_token') export token - echo "token from sackmesser: $token" elif [ "$apiversion" = "apigee" ]; then export token=${token:-$APIGEE_TOKEN} fi diff --git a/tools/apigee-sackmesser/cmd/export/export.sh b/tools/apigee-sackmesser/cmd/export/export.sh index 084484266..64dd603af 100755 --- a/tools/apigee-sackmesser/cmd/export/export.sh +++ b/tools/apigee-sackmesser/cmd/export/export.sh @@ -23,8 +23,16 @@ source "$SCRIPT_FOLDER/../../lib/logutils.sh" mgmtAPIDownload() { loginfo "Sackmesser export (zip) $1" - if [ "$opdk" == "yes" ]; then - curl -fsS -u $username:$password -v "http://$baseuri/v1/$1" -o "$2" + echo "opdk in export.sh is set to $opdk" + echo "insecure in export.sh is set to $insecure" + if [ "$opdk" == "T" ]; then + token=`echo -n $username:$password | base64` + echo "token in export.sh is set to $token" + if [ "$insecure" == "T" ]; then + curl -fsS -H "Authorization: Basic $token" -v "http://$baseuri/v1/$1" -o "$2" + else + curl -fsS -H "Authorization: Basic $token" -v "https://$baseuri/v1/$1" -o "$2" + fi else curl -fsS -H "Authorization: Bearer $token" "https://$baseuri/v1/$1" -o "$2" fi diff --git a/tools/apigee-sackmesser/cmd/list/list.sh b/tools/apigee-sackmesser/cmd/list/list.sh index 1814f1bf6..f80f183c2 100755 --- a/tools/apigee-sackmesser/cmd/list/list.sh +++ b/tools/apigee-sackmesser/cmd/list/list.sh @@ -50,9 +50,14 @@ elif [ "$apiversion" = "apigee" ]; then esac fi -if [ "$opdk" == "yes" ]; then + +if [ "$opdk" == "T" ]; then token=`echo -n $username:$password | base64` - curl -fsS -H "Authorization: Basic $token" -v "http://$baseuri/v1/$partial_uri" | jq "$jq_pattern" #to do: logic for https + if [ "$insecure" == "T" ]; then + curl -fsS -H "Authorization: Basic $token" -v "http://$baseuri/v1/$partial_uri" | jq "$jq_pattern" + else + curl -fsS -H "Authorization: Basic $token" -v "https://$baseuri/v1/$partial_uri" | jq "$jq_pattern" + fi else curl -fsS -H "Authorization: Bearer $token" "https://$baseuri/v1/$partial_uri" | jq "$jq_pattern" fi \ No newline at end of file From 8845ee9fd55feb32370af4d2732d1eb93b4104a2 Mon Sep 17 00:00:00 2001 From: Samrat Priyadarshi Date: Wed, 10 Aug 2022 07:42:53 +0000 Subject: [PATCH 188/562] remove unnecessary echo lines --- tools/apigee-sackmesser/cmd/export/export.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/apigee-sackmesser/cmd/export/export.sh b/tools/apigee-sackmesser/cmd/export/export.sh index 64dd603af..6e5cccf8b 100755 --- a/tools/apigee-sackmesser/cmd/export/export.sh +++ b/tools/apigee-sackmesser/cmd/export/export.sh @@ -23,11 +23,8 @@ source "$SCRIPT_FOLDER/../../lib/logutils.sh" mgmtAPIDownload() { loginfo "Sackmesser export (zip) $1" - echo "opdk in export.sh is set to $opdk" - echo "insecure in export.sh is set to $insecure" if [ "$opdk" == "T" ]; then token=`echo -n $username:$password | base64` - echo "token in export.sh is set to $token" if [ "$insecure" == "T" ]; then curl -fsS -H "Authorization: Basic $token" -v "http://$baseuri/v1/$1" -o "$2" else From f9f908f160f32693008c20c3aac343a9fd37d5b0 Mon Sep 17 00:00:00 2001 From: Samrat Priyadarshi Date: Wed, 10 Aug 2022 08:01:12 +0000 Subject: [PATCH 189/562] fix README --- tools/apigee-sackmesser/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/apigee-sackmesser/README.md b/tools/apigee-sackmesser/README.md index 96ca6545c..0dabf138a 100644 --- a/tools/apigee-sackmesser/README.md +++ b/tools/apigee-sackmesser/README.md @@ -12,8 +12,8 @@ for interacting with the Apigee Management APIs for Apigee X/hybrid and Edge. It also lets you deploy API proxies, shared flows and configuration to both stacks without writing any additional manifest files. -Please note that Apigee Private Cloud (OPDK) only supports list, export and report operations at this time. Support for other -operations would be added soon. +Please note that Apigee Sackmesser only supports list, export and report operations for Apigee Private Cloud (OPDK) at this time. +Support for other operations would be added soon. For interacting with the management API of Apigee X/hybrid only (without the need for backwards compatibility for Apigee Edge) you can also try the [apigeecli](https://github.com/apigee/apigeecli) commandline utility. @@ -69,7 +69,7 @@ Options: --deployment-sa, GCP Service Account to associate with the deployment (X,hybrid only) --description, Human friendly proxy or shared flow description --insecure, set this flag if you are using OPDK and http endpoint for Management API ---opdk, set this flag if your are using OPDK +--opdk, set this flag if you are using OPDK --skip-config, Skip configuration in org export ``` From 58c974bccd45c5ac8160b036301d720243e1e614 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 10 Aug 2022 11:42:22 +0200 Subject: [PATCH 190/562] fix: bump hybrid from 1.7.2 to 1.7.3 --- tools/hybrid-quickstart/steps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index 4581ce9c9..ba3c6b6d5 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -64,7 +64,7 @@ set_config_params() { export GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME:-apigee-hybrid} export GKE_CLUSTER_MACHINE_TYPE=${GKE_CLUSTER_MACHINE_TYPE:-e2-standard-4} echo "- GKE Node Type $GKE_CLUSTER_MACHINE_TYPE" - export APIGEE_HYBRID_VERSION='1.7.2' + export APIGEE_HYBRID_VERSION='1.7.3' echo "- Apigee hybrid version $APIGEE_HYBRID_VERSION" export KPT_VERSION='v0.34.0' echo "- kpt version $KPT_VERSION" From 77c3e845e6aafbfed8403ddcf8dc567b4b8bc4c0 Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Wed, 10 Aug 2022 11:58:31 +0200 Subject: [PATCH 191/562] chore!: releases for Apigee DevRel --- .github/workflows/devrel-release-please.yml | 31 +++++++++++++++++++++ .github/workflows/devrel-static-checks.yml | 11 ++++++++ CONTRIBUTING.md | 4 ++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/devrel-release-please.yml diff --git a/.github/workflows/devrel-release-please.yml b/.github/workflows/devrel-release-please.yml new file mode 100644 index 000000000..115976fbc --- /dev/null +++ b/.github/workflows/devrel-release-please.yml @@ -0,0 +1,31 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Release Please +on: + push: + branches: + - main + +jobs: + release-please: + name: Create Release + runs-on: ubuntu-latest + environment: devrel + steps: + - uses: google-github-actions/release-please-action@v3 + with: + token: ${{ secrets.RELEASE_PR_TOKEN }} + release-type: simple + package-name: apigee-devrel \ No newline at end of file diff --git a/.github/workflows/devrel-static-checks.yml b/.github/workflows/devrel-static-checks.yml index 83f1151e1..42f0e09c5 100644 --- a/.github/workflows/devrel-static-checks.yml +++ b/.github/workflows/devrel-static-checks.yml @@ -75,3 +75,14 @@ jobs: LINTER_RULES_PATH: '.' GROOVY_NPM_GROOVY_LINT_FILTER_REGEX_EXCLUDE: 'Jenkinsfile' MARKDOWN_MARKDOWN_LINK_CHECK_DISABLE_ERRORS: true + + commit-messages: + name: Conventional Commits Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: wagoid/commitlint-github-action@v4 + with: + failOnWarnings: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index da1d1908e..49cbbd49e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,4 +40,6 @@ - Contributor License [Agreement](https://opensource.google/docs/cla/) - In [Solidarity](https://developers.google.com/style/inclusive-documentation) - [Pipelines](./PIPELINES.md) - +- Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) + standards to tell the release automation which [SemVer](https://semver.org/) + version increase is intended. From aed9a15e5a2ac6c09eb0449331cd91c078a3b0f5 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Wed, 10 Aug 2022 08:45:43 -0500 Subject: [PATCH 192/562] lint fixes --- tools/apigee-envoy-quickstart/aekitctl.sh | 2 +- tools/apigee-envoy-quickstart/pipeline.sh | 2 ++ .../scripts/setup-istio-envoy.sh | 2 +- .../scripts/test-istio-apigee-envoy-filter.sh | 12 ++++++------ .../scripts/test-standalone-apigee-envoy-filter.sh | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh index d1c2fb6c7..a1d3df595 100755 --- a/tools/apigee-envoy-quickstart/aekitctl.sh +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -136,7 +136,7 @@ if [[ "$INSTALL_TYPE" == 'istio-apigee-envoy' ]] && [[ "$ACTION" == 'install' ]] elif [[ "$INSTALL_TYPE" == 'istio-apigee-envoy' ]] && [[ "$ACTION" == 'delete' ]]; then echo "Deleting istio-apigee-envoy" ./scripts/delete-apigee-envoy-setup.sh -elif [ "$INSTALL_TYPE" == 'standalone-apigee-envoy' -a "$ACTION" == 'install' ]; then +elif [[ "$INSTALL_TYPE" == 'standalone-apigee-envoy' ]] && [[ "$ACTION" == 'install' ]]; then createDir; echo "Installing standalone-apigee-envoy" export TEMPLATE=$STANDALONE_TEMPLATE_VER diff --git a/tools/apigee-envoy-quickstart/pipeline.sh b/tools/apigee-envoy-quickstart/pipeline.sh index d31405108..d5120537a 100755 --- a/tools/apigee-envoy-quickstart/pipeline.sh +++ b/tools/apigee-envoy-quickstart/pipeline.sh @@ -14,6 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +set -e + export ENVOY_HOME=/home export PIPELINE_TEST="true" diff --git a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh index 367d18c2e..49296153d 100755 --- a/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh +++ b/tools/apigee-envoy-quickstart/scripts/setup-istio-envoy.sh @@ -25,7 +25,7 @@ testHttpbin() { echo "Fixing the generated yaml files to use the namespace user provided" -kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" apply -f $CLI_HOME/config.yaml +kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" apply -f "$CLI_HOME"/config.yaml cd "$ENVOY_CONFIGS_HOME" || exit sed -i "s/namespace: default/namespace: ${NAMESPACE}/g" "$ENVOY_CONFIGS_HOME"/httpbin.yaml diff --git a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh index d4fefab13..cacfee6a7 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh @@ -18,10 +18,10 @@ set -e testHttpbin() { RESULT=1 - OUTPUT=$(kubectl --context=${CLUSTER_CTX} -n $NAMESPACE run -it --rm --image=curlimages/curl \ + OUTPUT=$(kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" run -it --rm --image=curlimages/curl \ --restart=Never curl --overrides='{"apiVersion": "v1", "metadata": {"annotations":{"sidecar.istio.io/inject": "false"}}}' \ -- curl -i httpbin.apigee.svc.cluster.local/headers -H "x-api-key: $CONSUMER_KEY" | grep 200) - printf $OUTPUT + printf "$OUTPUT" if [[ "$OUTPUT" == *"200"* ]]; then RESULT=0 fi @@ -30,18 +30,18 @@ testHttpbin() { printf "\nExtract the consumer key" -export CONSUMER_KEY=$(curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ +CONSUMER_KEY=$(curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ -H "Content-Type:application/json" \ "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com/apps/envoy-adapter-app-2" | \ jq '.credentials[0].consumerKey'); \ - export CONSUMER_KEY=$(echo $CONSUMER_KEY|cut -d '"' -f 2); \ + CONSUMER_KEY=$(echo "$CONSUMER_KEY"|cut -d '"' -f 2); export CONSUMER_KEY; \ printf "\n" && printf "\n" printf "\nWait for few minutes for the Envoy and Apigee adapter to have the setup completed. Then try the below command" printf "\n\n" -echo kubectl --context=${CLUSTER_CTX} -n $NAMESPACE run -it --rm --image=curlimages/curl --restart=Never curl \ +echo kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" run -it --rm --image=curlimages/curl --restart=Never curl \ --overrides=\'{\"apiVersion\":\"v1\", \"metadata\":{\"annotations\": { \"sidecar.istio.io/inject\":\"false\" } } }\' \ -- curl -i httpbin.apigee.svc.cluster.local/headers -H "\"x-api-key: $CONSUMER_KEY\"" @@ -56,7 +56,7 @@ RESULT=$? counter=0; while [[ $RESULT -ne 0 ]] && [[ $counter -lt 5 ]]; do - printf "\n\nTesting the httpbin application $counter of 5\n" + printf "\n\nTesting the httpbin application %s of 5\n" "$counter" sleep 20 testHttpbin; RESULT=$? diff --git a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh index 2a7dad463..f1f8b9a92 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-standalone-apigee-envoy-filter.sh @@ -46,7 +46,7 @@ printf "\nExtract the consumer key\n" CONSUMER_KEY=$(curl -H "Authorization: ${TOKEN_TYPE} ${TOKEN}" \ -H "Content-Type:application/json" \ "${MGMT_HOST}/v1/organizations/${APIGEE_ORG}/developers/test-envoy@google.com/apps/envoy-adapter-app-2" | \ - jq '.credentials[0].consumerKey');CONSUMER_KEY=$(echo $CONSUMER_KEY|cut -d '"' -f 2) + jq '.credentials[0].consumerKey');CONSUMER_KEY=$(echo "$CONSUMER_KEY"|cut -d '"' -f 2) export CONSUMER_KEY printf "\nWait for few minutes for the Envoy and Apigee adapter to have the setup completed. Then try the below command" From 116795ccaf8ef546a9e683584764197c466c2c65 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Wed, 10 Aug 2022 19:17:29 -0500 Subject: [PATCH 193/562] lint fixes --- tools/apigee-envoy-quickstart/aekitctl.sh | 8 +++++--- .../scripts/delete-apigee-envoy-setup.sh | 2 ++ .../scripts/service-accounts.sh | 3 +++ .../scripts/test-istio-apigee-envoy-filter.sh | 14 ++++++++++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh index a1d3df595..59c80189f 100755 --- a/tools/apigee-envoy-quickstart/aekitctl.sh +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -35,7 +35,7 @@ usage() { init() { export CLUSTER_CTX="gke_${PROJECT_ID}_${CLUSTER_LOCATION}_${CLUSTER_NAME}" - export ENVOY_AX_SA="x-apigee-envoy-adapter-2-sa" + export ENVOY_AX_SA="apigee-envoy-adapter-sa" export CLI_HOME=$ENVOY_HOME/apigee-remote-service-cli export REMOTE_SERVICE_HOME=$ENVOY_HOME/apigee-remote-service-envoy export ENVOY_CONFIGS_HOME=$CLI_HOME/envoy-configs-and-samples @@ -124,8 +124,10 @@ then ./scripts/validate-opdk-edge-setup.sh else ./scripts/validate-new-gen-setup.sh - export APIGEE_ORG=$APIGEE_X_ORG - export APIGEE_ENV=$APIGEE_X_ENV + # shellcheck disable=SC2153 + export APIGEE_ORG="$APIGEE_X_ORG" + # shellcheck disable=SC2153 + export APIGEE_ENV="$APIGEE_X_ENV" fi if [[ "$INSTALL_TYPE" == 'istio-apigee-envoy' ]] && [[ "$ACTION" == 'install' ]]; then diff --git a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh index c0b150dc8..6f7b86a3e 100755 --- a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh @@ -22,6 +22,8 @@ then echo "Deleting the namespace - $NAMESPACE" kubectl --context="${CLUSTER_CTX}" delete namespace "$NAMESPACE" +# TODO : NOt delete SA and Binding, but just SA key. + echo "Deleting the service account role binding" gcloud projects remove-iam-policy-binding "$APIGEE_PROJECT_ID" \ --member="serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \ diff --git a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh index 55a028c84..4a99e3e50 100755 --- a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh +++ b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh @@ -14,6 +14,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +#TODO : Check the SA exisist and then create if missing, check in cloud-run +# https://github.com/apigee/devrel/blob/main/references/cloud-run/pipeline.sh#L32 + gcloud iam service-accounts create "$ENVOY_AX_SA" \ --project="$APIGEE_PROJECT_ID" diff --git a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh index cacfee6a7..237d44603 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh @@ -21,7 +21,7 @@ testHttpbin() { OUTPUT=$(kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" run -it --rm --image=curlimages/curl \ --restart=Never curl --overrides='{"apiVersion": "v1", "metadata": {"annotations":{"sidecar.istio.io/inject": "false"}}}' \ -- curl -i httpbin.apigee.svc.cluster.local/headers -H "x-api-key: $CONSUMER_KEY" | grep 200) - printf "$OUTPUT" + printf "%s" "$OUTPUT" if [[ "$OUTPUT" == *"200"* ]]; then RESULT=0 fi @@ -41,9 +41,13 @@ printf "\nWait for few minutes for the Envoy and Apigee adapter to have the setu printf "\n\n" -echo kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" run -it --rm --image=curlimages/curl --restart=Never curl \ - --overrides=\'{\"apiVersion\":\"v1\", \"metadata\":{\"annotations\": { \"sidecar.istio.io/inject\":\"false\" } } }\' \ - -- curl -i httpbin.apigee.svc.cluster.local/headers -H "\"x-api-key: $CONSUMER_KEY\"" +#printf kubectl --context="${CLUSTER_CTX}" -n "$NAMESPACE" run -it --rm --image=curlimages/curl --restart=Never curl \ +# --overrides=\'{\"apiVersion\":\"v1\", \"metadata\":{\"annotations\": { \"sidecar.istio.io/inject\":\"false\" } } }\' \ +# -- curl -i httpbin.apigee.svc.cluster.local/headers -H "\"x-api-key: $CONSUMER_KEY\"" + +printf "kubectl --context=\"%s\" -n \"%s\" run -it --rm --image=curlimages/curl --restart=Never curl \ +--overrides=\'{\"apiVersion\":\"v1\", \"metadata\":{\"annotations\": { \"sidecar.istio.io/inject\":\"false\" } } }\' \ +-- curl -i httpbin.apigee.svc.cluster.local/headers -H \'x-api-key: %s\'" "${CLUSTER_CTX}" "${NAMESPACE}" "${CONSUMER_KEY}" printf "\n" @@ -69,3 +73,5 @@ else printf "\nValidation of the apigee envoy quickstart engine NOT successful" fi +#TODO : Validate cloud-logging post install +# https://github.com/apigee/devrel/blob/main/references/cloud-logging-shared-flow/pipeline.sh#L42-L47 From 7749b66caa78a96db0f52ce0225c88aa1313d3cb Mon Sep 17 00:00:00 2001 From: Daniel Strebel Date: Thu, 11 Aug 2022 10:48:27 +0200 Subject: [PATCH 194/562] fix: increase timeout for waiting for setup job --- tools/hybrid-quickstart/steps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hybrid-quickstart/steps.sh b/tools/hybrid-quickstart/steps.sh index ba3c6b6d5..dc6353e2b 100755 --- a/tools/hybrid-quickstart/steps.sh +++ b/tools/hybrid-quickstart/steps.sh @@ -815,7 +815,7 @@ install_runtime() { timeout 600 bash -c 'until kubectl wait --for=condition=ready --timeout 60s pod -l app=apigee-controller -n apigee-system; do sleep 10; done' timeout 600 bash -c 'until kubectl wait --for=condition=ready --timeout 60s issuer apigee-selfsigned-issuer -n apigee-system; do sleep 10; done' timeout 600 bash -c 'until kubectl wait --for=condition=ready --timeout 60s certificate apigee-serving-cert -n apigee-system; do sleep 10; done' - timeout 600 bash -c 'until kubectl wait --for=condition=complete --timeout 60s job/apigee-resources-install -n apigee-system; do sleep 10; done' + timeout 720 bash -c 'until kubectl wait --for=condition=complete --timeout 60s job/apigee-resources-install -n apigee-system; do sleep 10; done' export -f apigeectl_apply timeout 720 bash -c 'until apigeectl_apply; do sleep 20; done' From 24417c01d017c994bd0e32947f7fc81bb86fe277 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Thu, 11 Aug 2022 10:42:04 -0500 Subject: [PATCH 195/562] fixes for SA for pipeline runner --- .../scripts/delete-apigee-envoy-setup.sh | 22 ++++++++++++------- .../scripts/service-accounts.sh | 13 +++++------ 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh index 6f7b86a3e..4f9ecbdf4 100755 --- a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh @@ -22,16 +22,22 @@ then echo "Deleting the namespace - $NAMESPACE" kubectl --context="${CLUSTER_CTX}" delete namespace "$NAMESPACE" -# TODO : NOt delete SA and Binding, but just SA key. + if [[ -z $PIPELINE_TEST ]]; then - echo "Deleting the service account role binding" - gcloud projects remove-iam-policy-binding "$APIGEE_PROJECT_ID" \ - --member="serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \ - --role="roles/apigee.analyticsAgent" + echo "Deleting the service account role binding" + gcloud projects remove-iam-policy-binding "$APIGEE_PROJECT_ID" \ + --member="serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" \ + --role="roles/apigee.analyticsAgent" - echo "Deleting the service account" - gcloud iam service-accounts delete "$ENVOY_AX_SA"@"$APIGEE_PROJECT_ID".iam.gserviceaccount.com \ - --project="$APIGEE_PROJECT_ID" --quiet + echo "Deleting the service account" + gcloud iam service-accounts delete "$ENVOY_AX_SA"@"$APIGEE_PROJECT_ID".iam.gserviceaccount.com \ + --project="$APIGEE_PROJECT_ID" --quiet + else + echo "Skipping the delete of service account - $ENVOY_AX_SA, deleting the SA keys" + gcloud iam service-accounts keys delete "$AX_SERVICE_ACCOUNT" \ + --project="$APIGEE_PROJECT_ID" \ + --iam-account="$ENVOY_AX_SA"@"$APIGEE_PROJECT_ID".iam.gserviceaccount.com + fi rm "$ENVOY_HOME"/"$AX_SERVICE_ACCOUNT" fi diff --git a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh index 4a99e3e50..5e02f1ab7 100755 --- a/tools/apigee-envoy-quickstart/scripts/service-accounts.sh +++ b/tools/apigee-envoy-quickstart/scripts/service-accounts.sh @@ -13,13 +13,12 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -#TODO : Check the SA exisist and then create if missing, check in cloud-run -# https://github.com/apigee/devrel/blob/main/references/cloud-run/pipeline.sh#L32 - -gcloud iam service-accounts create "$ENVOY_AX_SA" \ ---project="$APIGEE_PROJECT_ID" - +FOUND_SA_IN_PROJECT="$(gcloud iam service-accounts list --filter "$ENVOY_AX_SA" \ + --format="value(email)" --project "$APIGEE_PROJECT_ID" | grep -w "^$ENVOY_AX_SA")" +if [ -z "$FOUND_SA_IN_PROJECT" ]; then + gcloud iam service-accounts create "$ENVOY_AX_SA" \ + --project="$APIGEE_PROJECT_ID" +fi gcloud projects add-iam-policy-binding "$APIGEE_PROJECT_ID" --member \ "serviceAccount:$ENVOY_AX_SA@$APIGEE_PROJECT_ID.iam.gserviceaccount.com" --role "roles/apigee.analyticsAgent" From 4918807f562424105c7e24398b41399a67b67d5a Mon Sep 17 00:00:00 2001 From: Devashish Patil Date: Fri, 12 Aug 2022 15:25:20 +0530 Subject: [PATCH 196/562] add kvms in report --- tools/apigee-sackmesser/cmd/report/report.sh | 56 +++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/tools/apigee-sackmesser/cmd/report/report.sh b/tools/apigee-sackmesser/cmd/report/report.sh index 2e9063c65..5ebf85805 100755 --- a/tools/apigee-sackmesser/cmd/report/report.sh +++ b/tools/apigee-sackmesser/cmd/report/report.sh @@ -408,6 +408,60 @@ done < <(find "$export_folder/apigeelint/sharedflows/"*.json -print0) echo "" >> "$report_html" +echo "

Configurations

" >> "$report_html" + +loginfo "Exporting Configurations" + +if [ ! -d "$export_folder/$organization/config/resources/edge/env/$environment" ]; then + mkdir -p "$export_folder/$organization/config/resources/edge/env/$environment" + echo "

No Configurations found in organization $organization

" >> "$report_html" +fi + +echo "

Key Value Maps

" >> "$report_html" + +mkdir -p "$export_folder/$organization/config/resources/edge/env/$environment/kvm" + +sackmesser list "organizations/$organization/environments/$environment/keyvaluemaps"| jq -r -c '.[]|.' | while read -r kvmname; do + sackmesser list "organizations/$organization/environments/$environment/keyvaluemaps/$kvmname" > "$export_folder/$organization/config/resources/edge/env/$environment/kvm/$kvmname".json + elem_count=$(jq '.entries? | length' "$export_folder/$organization/config/resources/edge/env/$environment/kvm/$kvmname".json) + if [ "$elem_count" -ge "1000" ]; then logwarn "KVMs in Apigee Edge are limited to 1000 entries."; fi + done + +if ls "$export_folder/$organization/config/resources/edge/env/$environment/kvm"/*.json 1> /dev/null 2>&1; then + jq -n '[inputs]' "$export_folder/$organization/config/resources/edge/env/$environment/kvm"/*.json > "$export_folder/$organization/config/resources/edge/env/$environment/kvms".json +fi + +echo "
" >> "$report_html" +echo "" >> "$report_html" +echo "" >> "$report_html" +echo "" >> "$report_html" +echo "" >> "$report_html" +echo "" >> "$report_html" + +echo "" >> "$report_html" + +jq -c '.[]' "$export_folder/$organization/config/resources/edge/env/$environment/kvms".json | while read i; do + kvmName=$(echo "$i" | jq -r '.name') + _encrypted=$(echo "$i" | jq -r '.encrypted') + keyCount=1 + + if [ $_encrypted = true ] + then + encrypted="✅" + else + encrypted="X" + fi + + echo "" >> "$report_html" + # echo "" >> "$report_html" + echo "" >> "$report_html" + echo "" >> "$report_html" + echo "" >> "$report_html" + echo "" >> "$report_html" +done + +echo "
NameEncyptedNumber of Keys
$sfname$kvmName"$encrypted"$keyCount
" >> "$report_html" + cat "$SCRIPT_FOLDER/static/footer.html" >> "$report_html" -loginfo "Sackmesser report is ready in: $report_html" +loginfo "Sackmesser report is ready in: $report_html" \ No newline at end of file From 344b08ec75104a7634cc628c29f05e9b57a18a0d Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Fri, 12 Aug 2022 13:36:18 -0500 Subject: [PATCH 197/562] enable pipeline for Apigee X validation of envoy adapter --- tools/apigee-envoy-quickstart/aekitctl.sh | 2 +- tools/apigee-envoy-quickstart/pipeline.sh | 12 +++++++++--- .../scripts/delete-apigee-envoy-setup.sh | 2 ++ .../scripts/test-istio-apigee-envoy-filter.sh | 3 --- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/tools/apigee-envoy-quickstart/aekitctl.sh b/tools/apigee-envoy-quickstart/aekitctl.sh index 59c80189f..cf06b7b97 100755 --- a/tools/apigee-envoy-quickstart/aekitctl.sh +++ b/tools/apigee-envoy-quickstart/aekitctl.sh @@ -96,7 +96,7 @@ if [[ -z $ACTION ]]; then usage "action is a mandatory field" fi -if [ "$PLATFORM" != 'opdk' ] && [ "$PLATFORM" != 'edge' ] +if [ "$PLATFORM" != 'opdk' ] && [ "$PLATFORM" != 'edge' ] && [ "$PIPELINE_TEST" != 'true' ] then gke-gcloud-auth-plugin --version > /dev/null 2>&1 RESULT=$? diff --git a/tools/apigee-envoy-quickstart/pipeline.sh b/tools/apigee-envoy-quickstart/pipeline.sh index d5120537a..f63cd59c6 100755 --- a/tools/apigee-envoy-quickstart/pipeline.sh +++ b/tools/apigee-envoy-quickstart/pipeline.sh @@ -32,9 +32,15 @@ printf "Running edge envoy setup" printf "Running edge envoy cleanup" ./aekitctl.sh --type standalone-apigee-envoy --action delete --platform edge +export APIGEE_PROJECT_ID="$APIGEE_X_ORG" +TOKEN=$(gcloud auth print-access-token); +export TOKEN +printf "Running X envoy cleanup" +./aekitctl.sh --type standalone-apigee-envoy --action delete +printf "Running X envoy setup" +./aekitctl.sh --type standalone-apigee-envoy --action install - - - +printf "Running X envoy cleanup" +./aekitctl.sh --type standalone-apigee-envoy --action delete diff --git a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh index 4f9ecbdf4..d42d2d23d 100755 --- a/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh +++ b/tools/apigee-envoy-quickstart/scripts/delete-apigee-envoy-setup.sh @@ -67,3 +67,5 @@ if [ "$PLATFORM" != 'opdk' ] && [ "$PLATFORM" != 'edge' ]; then fi rm "$ENVOY_HOME"/*.tar.* +echo "Done with the cleanup.." + diff --git a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh index 237d44603..374682181 100755 --- a/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh +++ b/tools/apigee-envoy-quickstart/scripts/test-istio-apigee-envoy-filter.sh @@ -72,6 +72,3 @@ if [ $RESULT -eq 0 ]; then else printf "\nValidation of the apigee envoy quickstart engine NOT successful" fi - -#TODO : Validate cloud-logging post install -# https://github.com/apigee/devrel/blob/main/references/cloud-logging-shared-flow/pipeline.sh#L42-L47 From 00b9bedb7895756517e5bdc2461b75990dd7da85 Mon Sep 17 00:00:00 2001 From: Ganapathy Duraiswamy Date: Mon, 15 Aug 2022 20:22:06 -0500 Subject: [PATCH 198/562] checking for x hostname with protocol prefixed --- tools/apigee-envoy-quickstart/pipeline.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/apigee-envoy-quickstart/pipeline.sh b/tools/apigee-envoy-quickstart/pipeline.sh index f63cd59c6..4b86e1aa6 100755 --- a/tools/apigee-envoy-quickstart/pipeline.sh +++ b/tools/apigee-envoy-quickstart/pipeline.sh @@ -23,6 +23,12 @@ export PIPELINE_TEST="true" export APIGEE_REMOTE_SRVC_CLI_VERSION=2.0.5 export APIGEE_REMOTE_SRVC_ENVOY_VERSION=2.0.5 +if [[ "$APIGEE_X_HOSTNAME" == http* ]]; then + echo "Runtime hostname value correctly set"; +else + APIGEE_X_HOSTNAME="https://$APIGEE_X_HOSTNAME"; +fi + printf "Running edge envoy cleanup" ./aekitctl.sh --type standalone-apigee-envoy --action delete --platform edge From 7ff8b509e5c509334d45c86e41c92468b9b3683b Mon Sep 17 00:00:00 2001 From: JoelGauci Date: Tue, 16 Aug 2022 10:26:38 +0200 Subject: [PATCH 199/562] #587: add DataCapture policy for analytics on risk core and token validity --- references/recaptcha-enterprise/README.md | 64 ++++++++++++++++++ .../images/example-riskScore.png | Bin 0 -> 123802 bytes .../images/example-tokenValidity.png | Bin 0 -> 80450 bytes references/recaptcha-enterprise/pipeline.sh | 11 +++ .../policies/AM-DeliverRecaptchaToken.xml | 6 +- .../policies/DC-RiskScore.xml | 19 ++++++ .../policies/DC-TokenValidity.xml | 19 ++++++ .../sharedflowbundle/sharedflows/default.xml | 6 ++ 8 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 references/recaptcha-enterprise/images/example-riskScore.png create mode 100644 references/recaptcha-enterprise/images/example-tokenValidity.png create mode 100644 references/recaptcha-enterprise/sf-recaptcha-enterprise-v1/sharedflowbundle/policies/DC-RiskScore.xml create mode 100644 references/recaptcha-enterprise/sf-recaptcha-enterprise-v1/sharedflowbundle/policies/DC-TokenValidity.xml diff --git a/references/recaptcha-enterprise/README.md b/references/recaptcha-enterprise/README.md index ccb471e81..4d961ef17 100644 --- a/references/recaptcha-enterprise/README.md +++ b/references/recaptcha-enterprise/README.md @@ -156,6 +156,70 @@ has been selected: - ```app-recaptcha-enterprise-always0``` - ```app-recaptcha-enterprise-always1``` +## Creating Custom Reports for Token Validity and Risk Score + +The sharedflow ```sf-recaptcha-enterprise-v1``` contains 2 +[DataCapture](https://cloud.google.com/apigee/docs/api-platform/reference/policies/data-capture-policy) +policies, which are used to retrieve the token validity +(true or false) and risk score. + +These values are extracted from the Google reCAPTCHA enterprise assessment +response and store into 2 data collectors: + +- dc_riskScore +- dc_TokenValidity + +From there, it is possible to create custom reports. +Here is an example for each data collector: + +### Custom Report for Risk Score + +![Custom Report Risk Score](./images/example-riskScore.png "Risk Score") + +The cURL command to create this report is the following: + + $ export APIGEE_TOKEN=$(gcloud auth print-access-token) + + $ curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $APIGEE_TOKEN" \ + --data '{"name":"my-riskscore-report", + "displayName":"my-riskscore-report", + "metrics":[{"name":"dc_riskScore", + "function":"avg"}, + {"name":"dc_riskScore","function":"min"}, + {"name":"dc_riskScore","function":"max"}, + {"name":"message_count","function":"sum"}], + "dimensions":["apiproxy","proxy_basepath","proxy_pathsuffix"], + "chartType":"column"}' \ + https://apigee.googleapis.com/v1/organizations/"$APIGEE_X_ORG"/reports + +### Custom Report for Token Validity + +![Custom Report Token Validity](./images/example-tokenValidity.png "Token Validity") + +The Client IP address (X-Forwarded-For HTTP header) has been intentionally +hidden on this report. + +The cURL command to create this report is the following: + + $ export APIGEE_TOKEN=$(gcloud auth print-access-token) + + $ curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $APIGEE_TOKEN" \ + --data '{"name":"my-token-validity-report", + "displayName":"my-token-validity-report", + "metrics":[{"name":"message_count", + "function":"sum"}], + "dimensions":[ + "dc_tokenValidity", + "apiproxy", + "proxy_basepath", + "proxy_pathsuffix", + "client_id", + "x_forwarded_for_ip"], + "chartType":"column"}' \ + https://apigee.googleapis.com/v1/organizations/"$APIGEE_X_ORG"/reports + ## reCAPTCHA Enterprise & Apigee Sequence Diagram The following sequence diagram provides all the interactions between: diff --git a/references/recaptcha-enterprise/images/example-riskScore.png b/references/recaptcha-enterprise/images/example-riskScore.png new file mode 100644 index 0000000000000000000000000000000000000000..2d922cd1718a4dc855cae0352318692d236c36ea GIT binary patch literal 123802 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�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±#hrL zdM&HH9KhlJHG(ZLRq#Fc;%I~fX8}8(5^h{eb-A_mdslLw2nw7P8VsX1QU-A|Fh+NtOFX~z%p@sy8ihEEkqXT; zi~B&16zZ#W{qAJ(BG1kf?j@TjPXjha>a!sndoAd7FT`%5xPe+N_=Qn_ovboHqmew^ zCJ1~ONFAmw8~F+<1Qpy_Uc0na(CqgP*=5VxrZPe|M1?7glE_#)5?LAoO!r3QVZFn zZf~P0R(>*jOor?}kT&MIcLOiwmFo95=)n+rVsSZ1ap(Ml^+&qIaRP_uh z%7b@akj9-J51KB-s@_nt@zB7EYS5>~uE<*|am{C(CM?jKB_(-=L|g#wcd4_5OF}fIW7E|AY=Rf*9#PQBz-0 zrL$6Jo@c|K;oi1qeov34UGuE01roM2uwu~TdlGMXoBcdCvJbztvE3+Gb}Jqn7=jzaUOy)`B1mI88PhWDT9YyR zlDPCZI2N(15%jG9n`cD|sNz8VsXg@hGvM9dKylA-D|J1ZV$&?0grqsM(GtUD$q|K) z>)A?4>5s`eXnE_$13LB()UyiS`7u0<9}Ue=;%yvj=qq^1TQdIkbvLe9a94iiol3MN zv2f6ZRYB%KgJuXj4(VLQ+ee}}{Ol3I#ILZWl?7NI61-x?@pw@w8a5HLw+}1V%0AmH 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 DHtdxp literal 0 HcmV?d00001 diff --git a/references/recaptcha-enterprise/pipeline.sh b/references/recaptcha-enterprise/pipeline.sh index 4a19d049b..f908352ac 100755 --- a/references/recaptcha-enterprise/pipeline.sh +++ b/references/recaptcha-enterprise/pipeline.sh @@ -216,6 +216,17 @@ if [ -z "$(gcloud iam service-accounts list --filter "$SA_EMAIL" --format="value --project "$APIGEE_X_ORG" fi +# Create DataCollectors on Apigee for custom analytics data reports (risk score and token validity) +curl --fail --silent -X POST \ + -H "Authorization: Bearer $APIGEE_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" \ + --data '{"name":"dc_riskScore","description":"data collection of Enterprise reCAPTCHA risk score","type":"FLOAT"}' \ + https://apigee.googleapis.com/v1/organizations/"$APIGEE_X_ORG"/datacollectors || true + +curl --fail --silent -X POST \ + -H "Authorization: Bearer $APIGEE_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" \ + --data '{"name":"dc_tokenValidity","description":"data collection of Enterprise reCAPTCHA token validity","type":"STRING"}' \ + https://apigee.googleapis.com/v1/organizations/"$APIGEE_X_ORG"/datacollectors || true + # If reCAPTCHA mock is enabled if [ "$IS_RECAPTCHA_MOCK_ENABLED" = "true" ];then diff --git a/references/recaptcha-enterprise/recaptcha-deliver-token-v1/apiproxy/policies/AM-DeliverRecaptchaToken.xml b/references/recaptcha-enterprise/recaptcha-deliver-token-v1/apiproxy/policies/AM-DeliverRecaptchaToken.xml index a22820305..cfe0b4086 100644 --- a/references/recaptcha-enterprise/recaptcha-deliver-token-v1/apiproxy/policies/AM-DeliverRecaptchaToken.xml +++ b/references/recaptcha-enterprise/recaptcha-deliver-token-v1/apiproxy/policies/AM-DeliverRecaptchaToken.xml @@ -18,7 +18,7 @@ Web page - reCAPTCHA enterprise - +

*3 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