From c4cb2ca461ddd104df4ff31a428071ee0a4a3a63 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Mon, 10 Feb 2025 13:55:37 -0700 Subject: [PATCH 01/14] Checks if docker instance of directus will execute --- .github/workflows/package.yml | 16 ++++ package.json | 6 +- pnpm-lock.yaml | 135 ++++++++++++++++++++++++++++++-- scripts/check-directus-loads.js | 41 ++++++++++ 4 files changed, 190 insertions(+), 8 deletions(-) create mode 100644 scripts/check-directus-loads.js diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 3da495cc..dad1a46c 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -37,3 +37,19 @@ jobs: uses: pnpm/action-setup@v4.0.0 - name: Lockfiles run: pnpm package:lockfile + directus_loads: + name: Loads into Directus + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + - name: Setup pnpm + uses: pnpm/action-setup@v4.0.0 + - name: Loads into Directus:latest + run: pnpm package:directus-load + - name: Loads into Directus:11 + run: pnpm package:directus-load 11 + - name: Loads into Directus:10 + run: pnpm package:directus-load 10 diff --git a/package.json b/package.json index a4917139..e55bce07 100644 --- a/package.json +++ b/package.json @@ -14,15 +14,17 @@ "dev": "pnpm --stream -r dev", "build": "pnpm --recursive run build", "validate": "pnpm --recursive run validate", + "lint": "eslint --flag unstable_config_lookup_from_file --cache .", + "lint:fix": "pnpm run lint --fix", "package:json": "pnpm --recursive exec node ../../scripts/check-package-json.js", "package:lockfile": "pnpm --recursive exec node ../../scripts/check-lock-files.js", - "lint": "eslint --flag unstable_config_lookup_from_file --cache .", - "lint:fix": "pnpm run lint --fix" + "package:directus-load": "pnpm --workspace-concurrency=1 --recursive exec node ../../scripts/check-directus-loads.js" }, "devDependencies": { "@directus/eslint-config": "github:directus/eslint-config#hannes/temp-workaround", "@nuxt/eslint-config": "^0.7.5", "eslint": "^9.18.0", + "execa": "^9.5.2", "jiti": "^2.4.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f219d637..8650f35e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: eslint: specifier: ^9.18.0 version: 9.19.0(jiti@2.4.2) + execa: + specifier: ^9.5.2 + version: 9.5.2 jiti: specifier: ^2.4.2 version: 2.4.2 @@ -2793,6 +2796,9 @@ packages: rollup: optional: true + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -2826,6 +2832,10 @@ packages: '@sinclair/typebox@0.34.13': resolution: {integrity: sha512-ceVKqyCEgC355Kw0s/0tyfY9MzMQINSykJ/pG2w6YnaZyrcjV48svZpr8lVZrYgWjzOmrIPBhQRAtr/7eJpA5g==} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@streamparser/json@0.0.20': resolution: {integrity: sha512-VqAAkydywPpkw63WQhPVKCD3SdwXuihCUVZbbiY3SfSTGQyHmwRoq27y4dmJdZuJwd5JIlQoMPyGvMbUPY0RKQ==} @@ -4420,6 +4430,10 @@ packages: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + execa@9.5.2: + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} + engines: {node: ^18.19.0 || >=20.5.0} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -4459,6 +4473,10 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -4579,6 +4597,10 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} @@ -4675,6 +4697,10 @@ packages: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} + human-signals@8.0.0: + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} + engines: {node: '>=18.18.0'} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -4820,6 +4846,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-plain-object@3.0.1: resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} engines: {node: '>=0.10.0'} @@ -4834,6 +4864,10 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -4842,6 +4876,10 @@ packages: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -5313,6 +5351,10 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -5423,6 +5465,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -5726,6 +5772,10 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -6073,6 +6123,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -6276,6 +6330,10 @@ packages: unhead@1.11.18: resolution: {integrity: sha512-TWgGUoZMpYe2yJwY6jZ0/9kpQT18ygr2h5lI6cUXdfD9UzDc0ytM9jGaleSYkj9guJWXkk7izYBnzJvxl8mRvQ==} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -6637,6 +6695,10 @@ packages: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + zhead@2.2.4: resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} @@ -11162,8 +11224,8 @@ snapshots: '@rollup/plugin-replace@5.0.7(rollup@3.29.5)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@3.29.5) - magic-string: 0.30.17 + '@rollup/pluginutils': 5.1.2(rollup@3.29.5) + magic-string: 0.30.12 optionalDependencies: rollup: 3.29.5 @@ -11212,6 +11274,14 @@ snapshots: optionalDependencies: rollup: 3.29.4 + '@rollup/pluginutils@5.1.2(rollup@3.29.5)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.29.5 + '@rollup/pluginutils@5.1.4(rollup@3.29.4)': dependencies: '@types/estree': 1.0.6 @@ -11228,6 +11298,8 @@ snapshots: optionalDependencies: rollup: 3.29.5 + '@sec-ant/readable-stream@0.4.1': {} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -11252,6 +11324,8 @@ snapshots: '@sinclair/typebox@0.34.13': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@streamparser/json@0.0.20': {} '@stylistic/eslint-plugin@2.13.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': @@ -13527,6 +13601,21 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 3.0.0 + execa@9.5.2: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -13579,6 +13668,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -13692,6 +13785,11 @@ snapshots: get-stream@6.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -13799,6 +13897,8 @@ snapshots: human-signals@4.3.1: {} + human-signals@8.0.0: {} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -14047,6 +14147,8 @@ snapshots: is-number@7.0.0: {} + is-plain-obj@4.1.0: {} + is-plain-object@3.0.1: {} is-potential-custom-element-name@1.0.1: @@ -14058,10 +14160,14 @@ snapshots: is-stream@3.0.0: {} + is-stream@4.0.1: {} + is-unicode-supported@0.1.0: {} is-unicode-supported@1.3.0: {} + is-unicode-supported@2.1.0: {} + isexe@2.0.0: {} jiti@2.4.2: {} @@ -14684,6 +14790,11 @@ snapshots: dependencies: path-key: 4.0.0 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -14816,6 +14927,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-ms@4.0.0: {} + parse5@6.0.1: optional: true @@ -15149,6 +15262,10 @@ snapshots: prettier@3.4.2: {} + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + proxy-from-env@1.1.0: {} psl@1.9.0: @@ -15556,6 +15673,8 @@ snapshots: strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -15736,6 +15855,8 @@ snapshots: '@unhead/shared': 1.11.18 hookable: 5.5.3 + unicorn-magic@0.3.0: {} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 @@ -15884,7 +16005,7 @@ snapshots: vite@4.5.5(@types/node@22.13.1)(sass@1.83.0)(terser@5.38.1): dependencies: esbuild: 0.18.20 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 3.29.5 optionalDependencies: '@types/node': 22.13.1 @@ -15895,7 +16016,7 @@ snapshots: vite@4.5.5(@types/node@22.13.1)(sass@1.83.1)(terser@5.38.1): dependencies: esbuild: 0.18.20 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 3.29.5 optionalDependencies: '@types/node': 22.13.1 @@ -15906,7 +16027,7 @@ snapshots: vite@4.5.5(@types/node@22.13.1)(sass@1.83.4)(terser@5.38.1): dependencies: esbuild: 0.18.20 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 3.29.5 optionalDependencies: '@types/node': 22.13.1 @@ -15928,7 +16049,7 @@ snapshots: vite@4.5.5(@types/node@22.7.7)(sass@1.84.0)(terser@5.38.1): dependencies: esbuild: 0.18.20 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 3.29.5 optionalDependencies: '@types/node': 22.7.7 @@ -16325,6 +16446,8 @@ snapshots: yoctocolors-cjs@2.1.2: {} + yoctocolors@2.1.1: {} + zhead@2.2.4: {} zod@3.22.4: {} diff --git a/scripts/check-directus-loads.js b/scripts/check-directus-loads.js new file mode 100644 index 00000000..e0fb0b96 --- /dev/null +++ b/scripts/check-directus-loads.js @@ -0,0 +1,41 @@ +import Buffer from 'node:buffer'; +import fs from 'node:fs'; +import process from 'node:process'; +import { execa, execaSync } from 'execa'; + +const DIRECTUS_VERSION = process.argv.slice(2)[0] || 'latest'; + +const { name } = JSON.parse(fs.readFileSync('./package.json', 'utf8')); + +const packageName = name.split('/')[1]; + +console.log(`Checking package ${name}`); + +async function dockerRun(image, name, path, version) { + console.log(`Run ${image}`); + + try { + const readable = execa({ shell: true })`docker run --rm -v ./packages/${name}:${path} --name ${name}.${version} ${image}`.readable(); + + readable.on('data', (data) => { + if (data.toString().includes('App [directus:0] online')) { + try { + readable.destroy(); + console.log(`Run ${image} success`); + process.exit(0); + } + catch (error) { + readable.destroy(); + console.error(error); + } + } + }); + } + catch (error) { + console.error(error); + process.exit(1); + } +} + +const image = `directus/directus:${DIRECTUS_VERSION}`; +await dockerRun(image, packageName, process.cwd(), DIRECTUS_VERSION); From e4ff6f7ec9703d4e2bf7770fbc4f1a5b9c6f7f18 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Mon, 10 Feb 2025 13:59:02 -0700 Subject: [PATCH 02/14] Fix linting --- scripts/check-directus-loads.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/check-directus-loads.js b/scripts/check-directus-loads.js index e0fb0b96..c9140319 100644 --- a/scripts/check-directus-loads.js +++ b/scripts/check-directus-loads.js @@ -1,7 +1,6 @@ -import Buffer from 'node:buffer'; import fs from 'node:fs'; import process from 'node:process'; -import { execa, execaSync } from 'execa'; +import { execa } from 'execa'; const DIRECTUS_VERSION = process.argv.slice(2)[0] || 'latest'; From a8a6263a793aa34b5b4be18b216e17303e1680da Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Mon, 10 Feb 2025 14:00:34 -0700 Subject: [PATCH 03/14] Switch to require --- scripts/check-directus-loads.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/check-directus-loads.js b/scripts/check-directus-loads.js index c9140319..fa07621f 100644 --- a/scripts/check-directus-loads.js +++ b/scripts/check-directus-loads.js @@ -1,6 +1,6 @@ -import fs from 'node:fs'; -import process from 'node:process'; -import { execa } from 'execa'; +const fs = require('node:fs'); +const process = require('node:process'); +const { execa } = require('execa'); const DIRECTUS_VERSION = process.argv.slice(2)[0] || 'latest'; From 880bc61faedd510a3952d1d16ed015e503bbf56a Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Mon, 10 Feb 2025 14:03:41 -0700 Subject: [PATCH 04/14] Change to node 22 --- .github/workflows/package.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index dad1a46c..0601868f 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -45,6 +45,8 @@ jobs: uses: actions/checkout@v4 - name: Install Node.js uses: actions/setup-node@v4 + with: + node-version: 22 - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 - name: Loads into Directus:latest From 80b4846d1c9b1802b4b20595ffb69d44dc47d54d Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Mon, 10 Feb 2025 14:05:06 -0700 Subject: [PATCH 05/14] Switch the imports --- scripts/check-directus-loads.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/check-directus-loads.js b/scripts/check-directus-loads.js index fa07621f..c9140319 100644 --- a/scripts/check-directus-loads.js +++ b/scripts/check-directus-loads.js @@ -1,6 +1,6 @@ -const fs = require('node:fs'); -const process = require('node:process'); -const { execa } = require('execa'); +import fs from 'node:fs'; +import process from 'node:process'; +import { execa } from 'execa'; const DIRECTUS_VERSION = process.argv.slice(2)[0] || 'latest'; From 15b681b1b72feb6624c73bb277c68cbb489514d7 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 07:59:35 -0700 Subject: [PATCH 06/14] Add a timeout to fail the test if the container takes to long to start or errors without closing --- scripts/check-directus-loads.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/check-directus-loads.js b/scripts/check-directus-loads.js index c9140319..cd5ac963 100644 --- a/scripts/check-directus-loads.js +++ b/scripts/check-directus-loads.js @@ -16,11 +16,14 @@ async function dockerRun(image, name, path, version) { try { const readable = execa({ shell: true })`docker run --rm -v ./packages/${name}:${path} --name ${name}.${version} ${image}`.readable(); + let success = false; + readable.on('data', (data) => { if (data.toString().includes('App [directus:0] online')) { try { readable.destroy(); console.log(`Run ${image} success`); + success = true; process.exit(0); } catch (error) { @@ -29,6 +32,13 @@ async function dockerRun(image, name, path, version) { } } }); + + setTimeout(() => { + if (!success) { + console.error(`Run ${image} fail - timeout`); + process.exit(1); + } + }, 30000); } catch (error) { console.error(error); From 9d01359c2305ccb148fafcf9d19760703e755b06 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 13:58:45 -0700 Subject: [PATCH 07/14] Move execa to dependencies --- package.json | 4 +++- pnpm-lock.yaml | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e55bce07..f9b2f76c 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,9 @@ "@directus/eslint-config": "github:directus/eslint-config#hannes/temp-workaround", "@nuxt/eslint-config": "^0.7.5", "eslint": "^9.18.0", - "execa": "^9.5.2", "jiti": "^2.4.2" + }, + "dependencies": { + "execa": "^9.5.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8650f35e..2f98e4c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,10 @@ settings: importers: .: + dependencies: + execa: + specifier: ^9.5.2 + version: 9.5.2 devDependencies: '@directus/eslint-config': specifier: github:directus/eslint-config#hannes/temp-workaround @@ -17,9 +21,6 @@ importers: eslint: specifier: ^9.18.0 version: 9.19.0(jiti@2.4.2) - execa: - specifier: ^9.5.2 - version: 9.5.2 jiti: specifier: ^2.4.2 version: 2.4.2 From 9d3883900d684a9a328ec013e83c36332184e593 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 14:00:04 -0700 Subject: [PATCH 08/14] Move execa to dependencies --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index f9b2f76c..2e91500f 100644 --- a/package.json +++ b/package.json @@ -20,13 +20,13 @@ "package:lockfile": "pnpm --recursive exec node ../../scripts/check-lock-files.js", "package:directus-load": "pnpm --workspace-concurrency=1 --recursive exec node ../../scripts/check-directus-loads.js" }, + "dependencies": { + "execa": "^9.5.2" + }, "devDependencies": { "@directus/eslint-config": "github:directus/eslint-config#hannes/temp-workaround", "@nuxt/eslint-config": "^0.7.5", "eslint": "^9.18.0", "jiti": "^2.4.2" - }, - "dependencies": { - "execa": "^9.5.2" } } From 8d8a07dc7e5b09d8c17312b292fbcebad4595e6a Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 17:08:35 -0700 Subject: [PATCH 09/14] Add missing install step --- .github/workflows/package.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 97938dcb..1b3727ca 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -49,6 +49,9 @@ jobs: node-version: 22 - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 + - name: Install dependencies + shell: bash + run: pnpm install - name: Loads into Directus:latest run: pnpm package:directus-load - name: Loads into Directus:11 From c3939e750fa08e976e5a8197f1bc19a3c157151b Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 17:56:02 -0700 Subject: [PATCH 10/14] Add a force stop and remove of containers --- scripts/check-directus-loads.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/scripts/check-directus-loads.js b/scripts/check-directus-loads.js index cd5ac963..1aeb6168 100644 --- a/scripts/check-directus-loads.js +++ b/scripts/check-directus-loads.js @@ -1,6 +1,6 @@ import fs from 'node:fs'; import process from 'node:process'; -import { execa } from 'execa'; +import { execa, execaSync } from 'execa'; const DIRECTUS_VERSION = process.argv.slice(2)[0] || 'latest'; @@ -10,38 +10,49 @@ const packageName = name.split('/')[1]; console.log(`Checking package ${name}`); +async function dockerRemove(name) { + console.log(`Stopping ${name}`); + return await execaSync({ shell: true })`docker rm --force ${name}`; +} + async function dockerRun(image, name, path, version) { console.log(`Run ${image}`); + const containerName = `${name}.${version}`; + try { - const readable = execa({ shell: true })`docker run --rm -v ./packages/${name}:${path} --name ${name}.${version} ${image}`.readable(); + const readable = execa({ shell: true })`docker run --rm -v ./packages/${name}:${path} --name ${containerName} ${image}`.readable(); let success = false; - readable.on('data', (data) => { + readable.on('data', async (data) => { if (data.toString().includes('App [directus:0] online')) { try { readable.destroy(); console.log(`Run ${image} success`); success = true; + await dockerRemove(containerName); process.exit(0); } catch (error) { readable.destroy(); + await dockerRemove(containerName); console.error(error); } } }); - setTimeout(() => { + setTimeout(async () => { if (!success) { console.error(`Run ${image} fail - timeout`); + await dockerRemove(containerName); process.exit(1); } }, 30000); } catch (error) { console.error(error); + await dockerRemove(containerName); process.exit(1); } } From 43f8316a9eb96c5d2412d21147e453ed4cc7ad71 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 18:01:56 -0700 Subject: [PATCH 11/14] Breakup workflow --- .github/workflows/package.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 1b3727ca..a7f0fae3 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -37,7 +37,7 @@ jobs: uses: pnpm/action-setup@v4.0.0 - name: Lockfiles run: pnpm package:lockfile - directus_loads: + directus_loads_start: name: Loads into Directus runs-on: ubuntu-latest steps: @@ -52,9 +52,21 @@ jobs: - name: Install dependencies shell: bash run: pnpm install + directus_loads_latest: + needs: directus_loads_start + runs-on: ubuntu-latest + steps: - name: Loads into Directus:latest run: pnpm package:directus-load + directus_loads_11: + needs: directus_loads_start + runs-on: ubuntu-latest + steps: - name: Loads into Directus:11 run: pnpm package:directus-load 11 + directus_loads_10: + needs: directus_loads_start + runs-on: ubuntu-latest + steps: - name: Loads into Directus:10 run: pnpm package:directus-load 10 From 8e9d6fa4cf6d8d81a1d32082131eabb7ae970a47 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 18:03:57 -0700 Subject: [PATCH 12/14] Add pnpm to each step --- .github/workflows/package.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index a7f0fae3..a1b493da 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -56,17 +56,32 @@ jobs: needs: directus_loads_start runs-on: ubuntu-latest steps: + - name: Setup pnpm + uses: pnpm/action-setup@v4.0.0 + - name: Install dependencies + shell: bash + run: pnpm install - name: Loads into Directus:latest run: pnpm package:directus-load directus_loads_11: needs: directus_loads_start runs-on: ubuntu-latest steps: + - name: Setup pnpm + uses: pnpm/action-setup@v4.0.0 + - name: Install dependencies + shell: bash + run: pnpm install - name: Loads into Directus:11 run: pnpm package:directus-load 11 directus_loads_10: needs: directus_loads_start runs-on: ubuntu-latest steps: + - name: Setup pnpm + uses: pnpm/action-setup@v4.0.0 + - name: Install dependencies + shell: bash + run: pnpm install - name: Loads into Directus:10 run: pnpm package:directus-load 10 From 54dead2512468fa6411b19c6f630aa03dbaaf8d8 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Tue, 11 Feb 2025 18:06:12 -0700 Subject: [PATCH 13/14] Entire initialisation step --- .github/workflows/package.yml | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index a1b493da..6e629d6d 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -43,19 +43,16 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Setup pnpm - uses: pnpm/action-setup@v4.0.0 - - name: Install dependencies - shell: bash - run: pnpm install directus_loads_latest: needs: directus_loads_start runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 - name: Install dependencies @@ -67,6 +64,12 @@ jobs: needs: directus_loads_start runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 - name: Install dependencies @@ -78,6 +81,12 @@ jobs: needs: directus_loads_start runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 - name: Setup pnpm uses: pnpm/action-setup@v4.0.0 - name: Install dependencies From 135d5273d11c0dedbca5658c5407fae721bb23c4 Mon Sep 17 00:00:00 2001 From: Mike Elsmore Date: Wed, 12 Feb 2025 07:41:20 -0700 Subject: [PATCH 14/14] Clean up and be explicit with version checking --- .github/workflows/package.yml | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 6e629d6d..e55b181d 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -37,31 +37,8 @@ jobs: uses: pnpm/action-setup@v4.0.0 - name: Lockfiles run: pnpm package:lockfile - directus_loads_start: - name: Loads into Directus - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - directus_loads_latest: - needs: directus_loads_start - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Setup pnpm - uses: pnpm/action-setup@v4.0.0 - - name: Install dependencies - shell: bash - run: pnpm install - - name: Loads into Directus:latest - run: pnpm package:directus-load directus_loads_11: - needs: directus_loads_start + name: Loads into Directus:11 runs-on: ubuntu-latest steps: - name: Checkout repository @@ -78,7 +55,7 @@ jobs: - name: Loads into Directus:11 run: pnpm package:directus-load 11 directus_loads_10: - needs: directus_loads_start + name: Loads into Directus:10 runs-on: ubuntu-latest steps: - name: Checkout repository