From 8a26f1cbba48d5a96af4d06b790c3ac8184886b7 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Wed, 29 Apr 2026 09:14:10 +0000 Subject: [PATCH] fix: modernize docker publishing --- .gitea/workflows/docker_nottags.yaml | 60 ++------ .gitea/workflows/docker_tags.yaml | 89 +++-------- .smartconfig.json | 7 +- Dockerfile | 55 +++---- package.json | 3 + pnpm-lock.yaml | 212 ++++++++++++++++++++++++++- test/test_latest.sh | 32 ++++ 7 files changed, 301 insertions(+), 157 deletions(-) create mode 100644 test/test_latest.sh diff --git a/.gitea/workflows/docker_nottags.yaml b/.gitea/workflows/docker_nottags.yaml index 72a4651..5ef55e2 100644 --- a/.gitea/workflows/docker_nottags.yaml +++ b/.gitea/workflows/docker_nottags.yaml @@ -1,4 +1,4 @@ -name: Docker (tags) +name: Docker (non-tag pushes) on: push: @@ -7,43 +7,11 @@ on: env: IMAGE: code.foss.global/host.today/ht-docker-node:szci - SZCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git - SZCI_TOKEN_NPM: ${{secrets.SZCI_TOKEN_NPM}} - SZCI_TOKEN_NPM2: ${{secrets.SZCI_TOKEN_NPM2}} - SZCI_GIT_GITHUBTOKEN: ${{secrets.SZCI_GIT_GITHUBTOKEN}} - SZCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }} - SZCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.SZCI_LOGIN_DOCKER_DOCKERREGISTRY }} + NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git + NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }} jobs: - security: - runs-on: ubuntu-latest - container: - image: ${{ env.IMAGE }} - continue-on-error: true - - steps: - - uses: actions/checkout@v3 - - - name: Install pnpm and szci - run: | - pnpm install -g pnpm - pnpm install -g @ship.zone/szci - szci npm prepare - - - name: Audit production dependencies - run: | - npm config set registry https://registry.npmjs.org - pnpm audit --audit-level=high --prod - continue-on-error: true - - - name: Audit development dependencies - run: | - npm config set registry https://registry.npmjs.org - pnpm audit --audit-level=high --dev - continue-on-error: true - test: - needs: security runs-on: ubuntu-latest container: image: ${{ env.IMAGE }} @@ -54,18 +22,14 @@ jobs: - name: Prepare run: | pnpm install -g pnpm - pnpm install -g @ship.zone/szci - szci npm prepare + pnpm install -g @git.zone/tsdocker@latest + pnpm install - - name: Test stable - run: | - szci node install stable - szci npm install - szci npm test + - name: Test + run: pnpm test - - name: Test build - run: | - szci npm prepare - szci node install stable - szci npm install - npm run build + - name: Build image + run: tsdocker build + + - name: Test image + run: tsdocker test diff --git a/.gitea/workflows/docker_tags.yaml b/.gitea/workflows/docker_tags.yaml index e6a288b..073a96b 100644 --- a/.gitea/workflows/docker_tags.yaml +++ b/.gitea/workflows/docker_tags.yaml @@ -7,74 +7,14 @@ on: env: IMAGE: code.foss.global/host.today/ht-docker-node:szci - SZCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git - SZCI_TOKEN_NPM: ${{secrets.SZCI_TOKEN_NPM}} - SZCI_TOKEN_NPM2: ${{secrets.SZCI_TOKEN_NPM2}} - SZCI_GIT_GITHUBTOKEN: ${{secrets.SZCI_GIT_GITHUBTOKEN}} - SZCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }} - SZCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.SZCI_LOGIN_DOCKER_DOCKERREGISTRY }} + NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git + NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }} jobs: - security: - runs-on: ubuntu-latest - container: - image: ${{ env.IMAGE }} - continue-on-error: true - - steps: - - uses: actions/checkout@v3 - - - name: Prepare - run: | - pnpm install -g pnpm - pnpm install -g @ship.zone/szci - szci npm prepare - - - name: Audit production dependencies - run: | - npm config set registry https://registry.npmjs.org - pnpm audit --audit-level=high --prod - continue-on-error: true - - - name: Audit development dependencies - run: | - npm config set registry https://registry.npmjs.org - pnpm audit --audit-level=high --dev - continue-on-error: true - - test: - needs: security - runs-on: ubuntu-latest - container: - image: ${{ env.IMAGE }} - - steps: - - uses: actions/checkout@v3 - - - name: Prepare - run: | - pnpm install -g pnpm - pnpm install -g @ship.zone/szci - szci npm prepare - - - name: Test stable - run: | - szci node install stable - szci npm install - szci npm test - - - name: Test build - run: | - szci node install stable - szci npm install - npm run build - release: - needs: test - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest container: - image: code.foss.global/host.today/ht-docker-node:dbase + image: code.foss.global/host.today/ht-docker-dbase:szci steps: - uses: actions/checkout@v3 @@ -82,11 +22,20 @@ jobs: - name: Prepare run: | pnpm install -g pnpm - pnpm install -g @ship.zone/szci + pnpm install -g @git.zone/tsdocker@latest + pnpm install - - name: Release - run: | - szci docker login - szci docker build - szci docker test - szci docker push + - name: Login to registries + run: tsdocker login + + - name: List images + run: tsdocker list + + - name: Build images + run: tsdocker build + + - name: Test images + run: tsdocker test + + - name: Push to code.foss.global + run: tsdocker push code.foss.global diff --git a/.smartconfig.json b/.smartconfig.json index 702ff98..f86d589 100644 --- a/.smartconfig.json +++ b/.smartconfig.json @@ -5,12 +5,11 @@ "npmRegistryUrl": "registry.npmjs.org" }, "@git.zone/tsdocker": { + "registries": ["code.foss.global"], "registryRepoMap": { - "registry.gitlab.com": "losslessone/services/servezone/coreflow" + "code.foss.global": "serve.zone/coreflow" }, - "buildArgEnvMap": { - "SZCI_TOKEN_NPM2": "SZCI_TOKEN_NPM2" - } + "platforms": ["linux/amd64", "linux/arm64"] }, "@git.zone/cli": { "projectType": "service", diff --git a/Dockerfile b/Dockerfile index 3e234de..86adc0b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,46 +1,33 @@ # gitzone dockerfile_service ## STAGE 1 // BUILD -FROM code.foss.global/host.today/ht-docker-node:szci as node1 -COPY ./ /app +FROM code.foss.global/host.today/ht-docker-node:lts AS build + WORKDIR /app -ARG SZCI_TOKEN_NPM2 -ENV SZCI_TOKEN_NPM2 $SZCI_TOKEN_NPM2 -RUN szci npm prepare + +COPY package.json pnpm-lock.yaml ./ RUN pnpm config set store-dir .pnpm-store -RUN rm -rf node_modules && pnpm install +RUN pnpm install --frozen-lockfile + +COPY . ./ RUN pnpm run build - -# gitzone dockerfile_service -## STAGE 2 // install production -FROM code.foss.global/host.today/ht-docker-node:szci as node2 -WORKDIR /app -COPY --from=node1 /app /app RUN rm -rf .pnpm-store -ARG SZCI_TOKEN_NPM2 -ENV SZCI_TOKEN_NPM2 $SZCI_TOKEN_NPM2 -RUN szci npm prepare -RUN pnpm config set store-dir .pnpm-store -RUN rm -rf node_modules/ && pnpm install --prod +RUN pnpm prune --prod +## STAGE 2 // PRODUCTION +FROM code.foss.global/host.today/ht-docker-node:lts AS production -## STAGE 3 // rebuild dependencies for alpine -FROM code.foss.global/host.today/ht-docker-node:alpine-szci as node3 WORKDIR /app -COPY --from=node2 /app /app -ARG SZCI_TOKEN_NPM2 -ENV SZCI_TOKEN_NPM2 $SZCI_TOKEN_NPM2 -RUN szci npm prepare -RUN pnpm config set store-dir .pnpm-store -RUN pnpm rebuild -r -## STAGE 4 // the final production image with all dependencies in place -FROM code.foss.global/host.today/ht-docker-node:alpine-node as node4 -WORKDIR /app -COPY --from=node3 /app /app +ENV NODE_ENV=production -### Healthchecks -RUN pnpm install -g @servezone/healthy -HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD [ "healthy" ] +COPY --from=build /app/package.json ./package.json +COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/cli.js ./cli.js +COPY --from=build /app/dist_ts ./dist_ts -EXPOSE 80 -CMD ["npm", "start"] +LABEL org.opencontainers.image.title="coreflow" \ + org.opencontainers.image.description="serve.zone Docker Swarm orchestrator" \ + org.opencontainers.image.source="https://code.foss.global/serve.zone/coreflow" + +EXPOSE 3000 +CMD ["node", "cli.js"] diff --git a/package.json b/package.json index 2812d66..1e3987d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,8 @@ "startTs": "(node cli.ts.js)", "watch": "(tswatch service)", "build": "(tsbuild --web --allowimplicitany)", + "build:docker": "tsdocker build --verbose", + "release:docker": "tsdocker push --verbose", "buildDocs": "tsdoc" }, "bin": { @@ -54,6 +56,7 @@ "homepage": "https://gitlab.com/losslessone/services/servezone/coreflow#readme", "devDependencies": { "@git.zone/tsbuild": "^4.4.0", + "@git.zone/tsdocker": "^2.2.4", "@git.zone/tsrun": "^2.0.2", "@git.zone/tstest": "^3.6.3", "@git.zone/tswatch": "^3.3.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbfb8d8..0acbd77 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,6 +84,9 @@ importers: '@git.zone/tsbuild': specifier: ^4.4.0 version: 4.4.0 + '@git.zone/tsdocker': + specifier: ^2.2.4 + version: 2.2.4 '@git.zone/tsrun': specifier: ^2.0.2 version: 2.0.2 @@ -130,6 +133,9 @@ packages: '@apiclient.xyz/docker@5.1.4': resolution: {integrity: sha512-I9mjv8LkRLfduepoutr7EbVdPIo9DcSokg/me3ulqaKMxYF1YAcl4NdAb+O4N+ZmDy0TlSv7QRCCWjP9uki1HA==} + '@apiglobal/typedrequest-interfaces@1.0.20': + resolution: {integrity: sha512-ybsDtavYbzGJYSLodSbkxDvSLYtfMzBTuNZDJpiANt1rZA2MO/GCq8zk5MVLlrUUQIr/7oxPGWqxi1QDwR+RHQ==} + '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -521,6 +527,10 @@ packages: resolution: {integrity: sha512-dw2VFlgKssDlCxg92wSPiiAKwfCjJBOEOYXq1xO91OpjQLOkyogCxSLy0jzQ2BYnt4qmBnapjamzYzVjCr4CWg==} hasBin: true + '@git.zone/tsdocker@2.2.4': + resolution: {integrity: sha512-B5N8I159R0X9NOrYWx3kLQPuIW71uXKzb+RCS4h9N5FSlCOWVPDUU4yuv0dl24lWHsQmSgcnSqPRAUxhSCqZng==} + hasBin: true + '@git.zone/tspublish@1.11.5': resolution: {integrity: sha512-3tCGhVbH6S/17n3A6Tc6H+ncRdxxbTT0ABcj8S1wRLA8YuBSj9bY7k6uj/iFRy/B/OepB94m1goCiaWESdcZYg==} hasBin: true @@ -1074,7 +1084,7 @@ packages: resolution: {integrity: sha512-uiqVAXPxmr8G5rv3uZvZFMOCt8l7cZC3nzvsy4YQqKf/VkPhKIEX+b7LkAeNlxPSYUiBQUkNRoawg9+5BaMcHg==} '@push.rocks/smartarchive@5.2.1': - resolution: {integrity: sha512-TNv5q6QuBRX7jrzffiyb6A8AALNAr0kyAcJswa0l3ahBP1Q6zszNo9xOVXmW2gKX2KShtO/Y+Cn0i46n8lbnaQ==} + resolution: {integrity: sha512-USkw65IYGfnpLv2/L3dinpqG3+vN5Rf4PEuMRFnDomYkxrzMCbHOR290PPSlC7C3tKXVDiU3d2rGZ6FYy5R+Bg==} '@push.rocks/smartbrowser@2.0.11': resolution: {integrity: sha512-Rj3+VodlFbW7CkvXqYxH4dEhtbYy987gVY7wsM76B+ipvnkSfjfEGuKUeMfKe4DscUBSmhlbJVYEYaH8RafUoQ==} @@ -1173,6 +1183,9 @@ packages: '@push.rocks/smartlog-interfaces@3.0.2': resolution: {integrity: sha512-8hGRTJehbsFSJxLhCQkA018mZtXVPxPTblbg9VaE/EqISRzUw+eosJ2EJV7M4Qu0eiTJZjnWnNLn8CkD77ziWw==} + '@push.rocks/smartlog-source-ora@1.0.9': + resolution: {integrity: sha512-s5OmwceGUFbCysYNg3VJZo07lkHxD2GPk8VABJTmhxtrogBw5kChx9d5NMdWQ+CovkNoNhKen1hF3b3l0v6jSQ==} + '@push.rocks/smartlog@3.2.2': resolution: {integrity: sha512-3Nw/Ki/jZ4vrrWnEtpcGPF28jQ+fr9/9Edc7ytaEA6ZWIpojtwacJ5qihMvHbIei+zjpD35w6tZP2mQjvw5VRQ==} @@ -1332,6 +1345,10 @@ packages: resolution: {integrity: sha512-9OJbnRgLTaCRQz+pqu5tB3ZCqRs5Zh0hnBe7t7URE+TgwIZ8aiELUIbWRkgn4mSGVzHyL6pqTyIowP6AjUCG3w==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartjson + '@pushrocks/smartlog-interfaces@2.0.23': + resolution: {integrity: sha512-tXqwfrekGxGZJB72BFQppywk7413hXVDgcJNeU+kY6xvmzVjf2HxOMbFYhewh1+p4uai1u9n0xcMb0qbbPy4/Q==} + deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartlog-interfaces + '@pushrocks/smartpromise@3.1.10': resolution: {integrity: sha512-VeTurbZ1+ZMxBDJk1Y1LV8SN9xLI+oDXKVeCFw41FAGEKOUEqordqFpi6t+7Vhe/TXUZzCVpZ5bXxAxrGf8yTQ==} deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartpromise @@ -2098,6 +2115,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -2280,6 +2301,14 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2309,6 +2338,14 @@ packages: resolution: {integrity: sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=} engines: {node: '>=4'} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -2317,10 +2354,20 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone@1.0.4: + resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2426,6 +2473,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -2541,6 +2591,10 @@ packages: escape-html@1.0.3: resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} + escape-string-regexp@1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2776,6 +2830,14 @@ packages: resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} engines: {node: '>=18.0.0'} + has-flag@3.0.0: + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -2895,6 +2957,10 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -3039,6 +3105,10 @@ packages: lodash.restparam@3.6.1: resolution: {integrity: sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=} + log-symbols@3.0.0: + resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} + engines: {node: '>=8'} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -3266,6 +3336,10 @@ packages: engines: {node: '>=16'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -3381,6 +3455,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3450,10 +3527,18 @@ packages: once@1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + ora@4.1.1: + resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} + engines: {node: '>=8'} + orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} @@ -3802,6 +3887,10 @@ packages: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -3985,6 +4074,14 @@ packages: resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} engines: {node: '>=16'} + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + sweet-scroll@4.0.0: resolution: {integrity: sha512-mR6fRsAQANtm3zpzhUE73KAOt2aT4ZsWzNSggiEsSqdO6Zh4gM7ioJG81EngrZEl0XAc3ZvzEfhxggOoEBc8jA==} @@ -4184,6 +4281,9 @@ packages: w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + wcwidth@1.0.1: + resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} + webdriver-bidi-protocol@0.4.1: resolution: {integrity: sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==} @@ -4500,6 +4600,8 @@ snapshots: - react-native-b4a - supports-color + '@apiglobal/typedrequest-interfaces@1.0.20': {} + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 @@ -5223,6 +5325,24 @@ snapshots: - supports-color - vue + '@git.zone/tsdocker@2.2.4': + dependencies: + '@push.rocks/lik': 6.4.0 + '@push.rocks/projectinfo': 5.1.0 + '@push.rocks/smartcli': 4.0.20 + '@push.rocks/smartconfig': 6.1.0 + '@push.rocks/smartfs': 1.5.0 + '@push.rocks/smartinteract': 2.0.16 + '@push.rocks/smartlog': 3.2.2 + '@push.rocks/smartlog-destination-local': 9.0.2 + '@push.rocks/smartlog-source-ora': 1.0.9 + '@push.rocks/smartshell': 3.3.8 + transitivePeerDependencies: + - '@nuxt/kit' + - react + - supports-color + - vue + '@git.zone/tspublish@1.11.5': dependencies: '@push.rocks/consolecolor': 2.0.3 @@ -6366,6 +6486,11 @@ snapshots: '@api.global/typedrequest-interfaces': 2.0.2 '@tsclass/tsclass': 4.4.4 + '@push.rocks/smartlog-source-ora@1.0.9': + dependencies: + '@pushrocks/smartlog-interfaces': 2.0.23 + ora: 4.1.1 + '@push.rocks/smartlog@3.2.2': dependencies: '@api.global/typedrequest-interfaces': 3.0.19 @@ -6803,6 +6928,10 @@ snapshots: fast-json-stable-stringify: 2.1.0 lodash.clonedeep: 4.5.0 + '@pushrocks/smartlog-interfaces@2.0.23': + dependencies: + '@apiglobal/typedrequest-interfaces': 1.0.20 + '@pushrocks/smartpromise@3.1.10': {} '@pushrocks/smartpromise@4.0.2': {} @@ -7675,6 +7804,10 @@ snapshots: ansi-regex@5.0.1: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -7852,6 +7985,17 @@ snapshots: ccount@2.0.1: {} + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -7876,6 +8020,12 @@ snapshots: clean-stack@1.3.0: {} + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + cli-width@4.1.0: {} cliui@8.0.1: @@ -7884,10 +8034,18 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone@1.0.4: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} combined-stream@1.0.8: @@ -7967,6 +8125,10 @@ snapshots: deep-extend@0.6.0: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + defer-to-connect@2.0.1: {} define-data-property@1.1.4: @@ -8114,6 +8276,8 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -8413,6 +8577,10 @@ snapshots: webidl-conversions: 7.0.0 whatwg-mimetype: 3.0.0 + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -8553,6 +8721,8 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-interactive@1.0.0: {} + is-nan@1.3.2: dependencies: call-bind: 1.0.9 @@ -8718,6 +8888,10 @@ snapshots: lodash.restparam@3.6.1: {} + log-symbols@3.0.0: + dependencies: + chalk: 2.4.2 + longest-streak@3.1.0: {} lower-case@1.1.4: {} @@ -9118,6 +9292,8 @@ snapshots: mime@4.1.0: {} + mimic-fn@2.1.0: {} + mimic-response@3.1.0: {} mimic-response@4.0.0: {} @@ -9223,6 +9399,8 @@ snapshots: ms@2.1.3: {} + mute-stream@0.0.8: {} + mute-stream@1.0.0: {} nanoid@4.0.2: {} @@ -9271,12 +9449,27 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + ora@4.1.1: + dependencies: + chalk: 3.0.0 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + log-symbols: 3.0.0 + mute-stream: 0.0.8 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + orderedmap@2.1.1: {} os-tmpdir@1.0.2: {} @@ -9700,6 +9893,11 @@ snapshots: dependencies: lowercase-keys: 3.0.0 + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -9985,6 +10183,14 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 5.4.2 + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + sweet-scroll@4.0.0: {} symbol-tree@3.2.4: {} @@ -10195,6 +10401,10 @@ snapshots: w3c-keyname@2.2.8: {} + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + webdriver-bidi-protocol@0.4.1: {} webidl-conversions@7.0.0: {} diff --git a/test/test_latest.sh b/test/test_latest.sh new file mode 100644 index 0000000..8a409fa --- /dev/null +++ b/test/test_latest.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -euo pipefail + +node --input-type=module <<'NODE' +import fs from 'node:fs'; + +const readJson = (path) => JSON.parse(fs.readFileSync(path, 'utf8')); + +const checks = { + packageVersion: readJson('/app/package.json').version, + interfacesVersion: readJson('/app/node_modules/@serve.zone/interfaces/package.json').version, + apiVersion: readJson('/app/node_modules/@serve.zone/api/package.json').version, + hasCli: fs.existsSync('/app/cli.js'), +}; + +await import('/app/dist_ts/index.js'); + +if (checks.packageVersion !== '1.1.0') { + throw new Error(`Unexpected Coreflow package version ${checks.packageVersion}`); +} +if (checks.interfacesVersion !== '5.4.6') { + throw new Error(`Unexpected interfaces version ${checks.interfacesVersion}`); +} +if (checks.apiVersion !== '5.3.4') { + throw new Error(`Unexpected api version ${checks.apiVersion}`); +} +if (!checks.hasCli) { + throw new Error('Missing cli.js'); +} + +console.log(JSON.stringify(checks)); +NODE