From e192a0bc1857efc2b4e7f110fbe49835c5e13373 Mon Sep 17 00:00:00 2001 From: OurchitectureIO <97544811+ourchitectureio@users.noreply.github.com> Date: Sat, 16 Mar 2024 23:36:58 -0400 Subject: [PATCH] chore(ourstage): techdocs python dependencies Signed-off-by: OurchitectureIO <97544811+ourchitectureio@users.noreply.github.com> --- .gitignore | 3 + .../dev/backstage/ourstage/app-config.yaml | 2 +- .../ourstage/install-dependencies-python.js | 67 ++++++++++++++ src/systems/dev/backstage/ourstage/makefile | 25 +++++- .../dev/backstage/ourstage/package.json | 3 + .../ourstage/techdocs.requirements.txt | 7 ++ src/systems/dev/backstage/ourstage/yarn.lock | 89 ++++++++++++++++++- 7 files changed, 190 insertions(+), 6 deletions(-) create mode 100644 src/systems/dev/backstage/ourstage/install-dependencies-python.js create mode 100644 src/systems/dev/backstage/ourstage/techdocs.requirements.txt diff --git a/.gitignore b/.gitignore index b93d0d7..d62d8d6 100644 --- a/.gitignore +++ b/.gitignore @@ -106,6 +106,9 @@ $RECYCLE.BIN/ ############################################################################### ############################################################################### +# Python virtual environments +.venv + # Yarn directories *not using Zero-installs* .pnp.* .yarn/* diff --git a/src/systems/dev/backstage/ourstage/app-config.yaml b/src/systems/dev/backstage/ourstage/app-config.yaml index 878f900..e101525 100644 --- a/src/systems/dev/backstage/ourstage/app-config.yaml +++ b/src/systems/dev/backstage/ourstage/app-config.yaml @@ -66,7 +66,7 @@ proxy: techdocs: builder: 'local' # Alternatives - 'external' generator: - runIn: 'docker' # Alternatives - 'local' + runIn: 'local' # Alternatives - 'local' publisher: type: 'local' # Alternatives - 'googleGcs' or 'awsS3'. Read documentation for using alternatives. diff --git a/src/systems/dev/backstage/ourstage/install-dependencies-python.js b/src/systems/dev/backstage/ourstage/install-dependencies-python.js new file mode 100644 index 0000000..bd4872d --- /dev/null +++ b/src/systems/dev/backstage/ourstage/install-dependencies-python.js @@ -0,0 +1,67 @@ +const main = async () => { + require('dotenv').config(); + + const glob = (await import('glob')).glob; + const execa = (await import('execa')).execa; + + console.log('Installing ourstage python dependencies...'); + + const pythonCommand = process.env.PYTHON3; + const pipIndexUrl = process.env.PIP_INDEX_URL; + + const upgradePipArgv = [ + '-m', + 'pip', + 'install', + '--index-url', + pipIndexUrl, + '--upgrade', + 'pip', + ]; + + const upgradePipResult = await execa(pythonCommand, upgradePipArgv, { + cleanup: true, + env: process.env, + shell: false, + stderr: process.stderr, + stdout: process.stdout, + stripFinalNewline: true, + }); + + if (upgradePipResult.failed) { + throw new Error('Failed to upgrade pip.'); + } + + const pipInstallDependenciesArgv = [ + '-m', + 'pip', + 'install', + '--index-url', + `"${pipIndexUrl}"`, + '--requirement', + './techdocs.requirements.txt', + ]; + + const pipInstallDependenciesResult = await execa( + pythonCommand, + pipInstallDependenciesArgv, + { + cleanup: true, + env: process.env, + shell: false, + stderr: process.stderr, + stdout: process.stdout, + stripFinalNewline: true, + }, + ); + + if (pipInstallDependenciesResult.failed) { + throw new Error('Failed to install python dependencies.'); + } + + console.log('Successfully installed ourstage python dependencies.'); +}; + +(async () => { + await main(); +})(); diff --git a/src/systems/dev/backstage/ourstage/makefile b/src/systems/dev/backstage/ourstage/makefile index 8c8101f..f3befb3 100644 --- a/src/systems/dev/backstage/ourstage/makefile +++ b/src/systems/dev/backstage/ourstage/makefile @@ -1,3 +1,5 @@ +python3 := python3 + ourstage_backend_port := 7007 ourstage_backend_container_port := 7007 ourstage_backend_env := dev @@ -8,12 +10,25 @@ ourstage_backend_container_name := ourstage-backend-$(ourstage_backend_env) all: install-dependencies install check -.PHONY: install-dependencies -install-dependencies: - @echo "Installing ourstage dependencies..." +.PHONY: install-dependencies-node +install-dependencies-node: + @echo "Installing ourstage node dependencies..." @npm_config_loglevel=error yarn install --immutable @yarn workspaces foreach --all --interlaced run install --immutable - @echo "Successfully installed ourstage dependencies." + @echo "Successfully installed ourstage node dependencies." + +.PHONY: install-python-venv +install-python-venv: + @$(python3) -m venv ./.venv + +.PHONY: install-dependencies-python +install-dependencies-python: install-python-venv + @activate_file_path="$(shell find ./.venv -name activate -type f)" \ + && . "$$activate_file_path" \ + && node ./install-dependencies-python.js + +.PHONY: install-dependencies +install-dependencies: install-dependencies-node install-dependencies-python .PHONY: init init: install-dependencies @@ -131,6 +146,8 @@ shutdown: down .PHONY: upgrade upgrade: @echo "Upgrading ourstage..." + @python -m venv ./.venv + @. $(python_venv_activate_file_path) && python3 -m pip install --upgrade pip @yarn upgrade-interactive @echo "Successfully upgraded ourstage." diff --git a/src/systems/dev/backstage/ourstage/package.json b/src/systems/dev/backstage/ourstage/package.json index a776b7e..c668de2 100644 --- a/src/systems/dev/backstage/ourstage/package.json +++ b/src/systems/dev/backstage/ourstage/package.json @@ -39,6 +39,9 @@ "@playwright/test": "^1.42.1", "@spotify/prettier-config": "^12.0.0", "concurrently": "^8.2.2", + "dotenv": "^16.4.5", + "execa": "^8.0.1", + "glob": "^10.3.10", "lerna": "^7.4.2", "node-gyp": "^9.4.1", "prettier": "^2.8.8", diff --git a/src/systems/dev/backstage/ourstage/techdocs.requirements.txt b/src/systems/dev/backstage/ourstage/techdocs.requirements.txt new file mode 100644 index 0000000..7a23ee4 --- /dev/null +++ b/src/systems/dev/backstage/ourstage/techdocs.requirements.txt @@ -0,0 +1,7 @@ +mkdocs==1.5.3 + +# Caveat: Please install the mkdocs-techdocs-core package after all other +# Python packages. The order is important to make sure we get correct +# version of some of the dependencies. +# Source: https://backstage.io/docs/features/techdocs/getting-started#disabling-docker-in-docker-situation-optional +mkdocs-techdocs-core==1.3.5 diff --git a/src/systems/dev/backstage/ourstage/yarn.lock b/src/systems/dev/backstage/ourstage/yarn.lock index 067fc9a..df0d6eb 100644 --- a/src/systems/dev/backstage/ourstage/yarn.lock +++ b/src/systems/dev/backstage/ourstage/yarn.lock @@ -8210,6 +8210,9 @@ __metadata: "@playwright/test": "npm:^1.42.1" "@spotify/prettier-config": "npm:^12.0.0" concurrently: "npm:^8.2.2" + dotenv: "npm:^16.4.5" + execa: "npm:^8.0.1" + glob: "npm:^10.3.10" lerna: "npm:^7.4.2" node-gyp: "npm:^9.4.1" prettier: "npm:^2.8.8" @@ -16582,6 +16585,13 @@ __metadata: languageName: node linkType: hard +"dotenv@npm:^16.4.5": + version: 16.4.5 + resolution: "dotenv@npm:16.4.5" + checksum: 10/55a3134601115194ae0f924e54473459ed0d9fc340ae610b676e248cca45aa7c680d86365318ea964e6da4e2ea80c4514c1adab5adb43d6867fb57ff068f95c8 + languageName: node + linkType: hard + "dotenv@npm:~16.3.1": version: 16.3.2 resolution: "dotenv@npm:16.3.2" @@ -17754,6 +17764,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10/d2ab5fe1e2bb92b9788864d0713f1fce9a07c4594e272c0c97bc18c90569897ab262e4ea58d27a694d288227a2e24f16f5e2575b44224ad9983b799dc7f1098d + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -18836,6 +18863,13 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10/dde5511e2e65a48e9af80fea64aff11b4921b14b6e874c6f8294c50975095af08f41bfb0b680c887f28b566dd6ec2cb2f960f9d36a323359be324ce98b766e9e + languageName: node + linkType: hard + "get-symbol-description@npm:^1.0.2": version: 1.0.2 resolution: "get-symbol-description@npm:1.0.2" @@ -19888,6 +19922,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10/30f8870d831cdcd2d6ec0486a7d35d49384996742052cee792854273fa9dd9e7d5db06bb7985d4953e337e10714e994e0302e90dc6848069171b05ec836d65b0 + languageName: node + linkType: hard + "humanize-duration@npm:^3.25.1": version: 3.31.0 resolution: "humanize-duration@npm:3.31.0" @@ -20660,6 +20701,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10/172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16 + languageName: node + linkType: hard + "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -23732,6 +23780,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10/995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56 + languageName: node + linkType: hard + "mimic-response@npm:^1.0.0": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" @@ -24734,6 +24789,15 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10/ae8e7a89da9594fb9c308f6555c73f618152340dcaae423e5fb3620026fefbec463618a8b761920382d666fa7a2d8d240b6fe320e8a6cdd54dc3687e2b659d25 + languageName: node + linkType: hard + "npmlog@npm:^6.0.0, npmlog@npm:^6.0.2": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -25099,6 +25163,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10/0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788 + languageName: node + linkType: hard + "ono@npm:^7.1.3": version: 7.1.3 resolution: "ono@npm:7.1.3" @@ -25788,6 +25861,13 @@ __metadata: languageName: node linkType: hard +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10/8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7 + languageName: node + linkType: hard + "path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -28936,7 +29016,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 10/c9fa63bbbd7431066174a48ba2dd9986dfd930c3a8b59de9c29d7b6854ec1c12a80d15310869ea5166d413b99f041bfa3dd80a7947bcd44ea8e6eb3ffeabfa1f @@ -29717,6 +29797,13 @@ __metadata: languageName: node linkType: hard +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10/23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050 + languageName: node + linkType: hard + "strip-indent@npm:^3.0.0": version: 3.0.0 resolution: "strip-indent@npm:3.0.0"