Compare commits

..

8 Commits

Author SHA1 Message Date
jkunz a88c816763 v2.2.7
Default (tags) / security (push) Failing after 1s
Default (tags) / test (push) Failing after 1s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2026-05-09 12:33:44 +00:00
jkunz 7cee6eb187 fix(docs): update installation and configuration documentation and include the license file in published artifacts 2026-05-09 12:33:44 +00:00
jkunz ec911832ed v2.2.6
Default (tags) / security (push) Failing after 1s
Default (tags) / test (push) Failing after 1s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2026-05-08 13:40:20 +00:00
jkunz 302667305e fix(tsdockermanager): update project info loading to use the async ProjectInfo factory 2026-05-08 13:40:20 +00:00
jkunz 56cf0c0f52 v2.2.5
Default (tags) / security (push) Failing after 1s
Default (tags) / test (push) Failing after 1s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2026-04-30 12:55:20 +00:00
jkunz 3a747cfd2f fix(scripts): use pnpm for the test script build command 2026-04-30 12:55:20 +00:00
jkunz 461c4bb5a9 v2.2.4
Default (tags) / security (push) Failing after 0s
Default (tags) / test (push) Failing after 0s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2026-03-24 18:56:43 +00:00
jkunz 3c3662d935 fix(config): migrate configuration loading to smartconfig and update build tooling compatibility 2026-03-24 18:56:43 +00:00
13 changed files with 2565 additions and 1383 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"json.schemas": [ "json.schemas": [
{ {
"fileMatch": ["/npmextra.json"], "fileMatch": ["/smartconfig.json"],
"schema": { "schema": {
"type": "object", "type": "object",
"properties": { "properties": {
+25
View File
@@ -1,5 +1,30 @@
# Changelog # Changelog
## 2026-05-09 - 2.2.7 - fix(docs)
update installation and configuration documentation and include the license file in published artifacts
- Add the MIT license file to the repository and package contents
- Refresh README installation examples to use pnpm commands and clarify local vs CI builder and registry behavior
- Correct CLI help text to reference .smartconfig.json and update dependency versions in package.json
## 2026-05-08 - 2.2.6 - fix(tsdockermanager)
update project info loading to use the async ProjectInfo factory
- bump @push.rocks/projectinfo from ^5.0.2 to ^5.1.0
- replace direct ProjectInfo construction with await ProjectInfo.create(paths.cwd) during manager preparation
## 2026-04-30 - 2.2.5 - fix(scripts)
use pnpm for the test script build command
- updates the test script in package.json to run the build through pnpm instead of npm
## 2026-03-24 - 2.2.4 - fix(config)
migrate configuration loading to smartconfig and update build tooling compatibility
- switch configuration loading and documentation to .smartconfig.json
- upgrade build and test dependencies for tsbuild 4.4.0 and TypeScript 6 compatibility
- remove deprecated tsconfig baseUrl and paths settings and add an lru-cache override to avoid type issues
## 2026-03-24 - 2.2.3 - fix(config) ## 2026-03-24 - 2.2.3 - fix(config)
update workflow repository URL handling and package config file references update workflow repository URL handling and package config file references
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Task Venture Capital GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+28 -21
View File
@@ -1,15 +1,15 @@
{ {
"name": "@git.zone/tsdocker", "name": "@git.zone/tsdocker",
"version": "2.2.3", "version": "2.2.7",
"private": false, "private": false,
"description": "develop npm modules cross platform with docker", "description": "A comprehensive Docker build tool for TypeScript projects with multi-arch support, multi-registry push, and CI-safe session isolation.",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
"bin": { "bin": {
"tsdocker": "cli.js" "tsdocker": "cli.js"
}, },
"scripts": { "scripts": {
"test": "(npm run build)", "test": "(pnpm run build)",
"build": "(tsbuild)", "build": "(tsbuild)",
"buildDocs": "tsdoc" "buildDocs": "tsdoc"
}, },
@@ -18,31 +18,40 @@
"url": "https://gitlab.com/gitzone/tsdocker.git" "url": "https://gitlab.com/gitzone/tsdocker.git"
}, },
"keywords": [ "keywords": [
"docker" "docker",
"typescript",
"buildx",
"multi-arch",
"multi-registry",
"oci",
"container",
"ci-cd",
"docker-build",
"cross-platform"
], ],
"author": "Lossless GmbH", "author": "Task Venture Capital GmbH",
"license": "MIT", "license": "MIT",
"bugs": { "bugs": {
"url": "https://gitlab.com/gitzone/tsdocker/issues" "url": "https://gitlab.com/gitzone/tsdocker/issues"
}, },
"homepage": "https://gitlab.com/gitzone/tsdocker#readme", "homepage": "https://gitlab.com/gitzone/tsdocker#readme",
"devDependencies": { "devDependencies": {
"@git.zone/tsbuild": "^4.3.0", "@git.zone/tsbuild": "^4.4.0",
"@git.zone/tsrun": "^2.0.1", "@git.zone/tsrun": "^2.0.3",
"@git.zone/tstest": "^3.3.2", "@git.zone/tstest": "^3.6.5",
"@types/node": "^25.5.0" "@types/node": "^25.6.2"
}, },
"dependencies": { "dependencies": {
"@push.rocks/lik": "^6.3.1", "@push.rocks/lik": "^6.4.1",
"@push.rocks/smartconfig": "^6.0.0", "@push.rocks/projectinfo": "^5.1.0",
"@push.rocks/projectinfo": "^5.0.2", "@push.rocks/smartcli": "^4.0.21",
"@push.rocks/smartcli": "^4.0.20", "@push.rocks/smartconfig": "^6.1.1",
"@push.rocks/smartfs": "^1.5.0", "@push.rocks/smartfs": "^1.5.1",
"@push.rocks/smartinteract": "^2.0.16", "@push.rocks/smartinteract": "^2.0.16",
"@push.rocks/smartlog": "^3.2.1", "@push.rocks/smartlog": "^3.2.2",
"@push.rocks/smartlog-destination-local": "^9.0.2", "@push.rocks/smartlog-destination-local": "^9.0.2",
"@push.rocks/smartlog-source-ora": "^1.0.9", "@push.rocks/smartlog-source-ora": "^1.0.9",
"@push.rocks/smartshell": "^3.3.7" "@push.rocks/smartshell": "^3.3.8"
}, },
"packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34", "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34",
"type": "module", "type": "module",
@@ -56,9 +65,7 @@
"assets/**/*", "assets/**/*",
"cli.js", "cli.js",
".smartconfig.json", ".smartconfig.json",
"readme.md" "readme.md",
], "license"
"pnpm": { ]
"overrides": {}
}
} }
+2461 -1338
View File
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -23,7 +23,7 @@ tsdocker is a comprehensive Docker development and building tool. It provides:
## Configuration ## Configuration
Configure in `package.json` under `@git.zone/tsdocker`: Configure in `.smartconfig.json` under `@git.zone/tsdocker`:
```json ```json
{ {
@@ -117,10 +117,16 @@ The `config.push` field is now a no-op (kept for backward compat).
## Build Status ## Build Status
- Build: ✅ Passes - Build: ✅ Passes (TypeScript 6 via tsbuild 4.4.0)
## Previous Upgrades (2025-11-22) ## Previous Upgrades
### 2026-03-24
- Upgraded `@git.zone/tsbuild` from 4.3.0 to 4.4.0 (TypeScript 6)
- Removed deprecated `baseUrl`/`paths` from tsconfig.json
- Added pnpm override `lru-cache: ">=11.0.0"` to fix TS6 type incompatibility with lru-cache@10.x
### 2025-11-22
- Updated all @git.zone/_ dependencies to @git.zone/_ scope - Updated all @git.zone/_ dependencies to @git.zone/_ scope
- Updated all @pushrocks/_ dependencies to @push.rocks/_ scope - Updated all @pushrocks/_ dependencies to @push.rocks/_ scope
- Migrated from smartfile v8 to smartfs v1.1.0 - Migrated from smartfile v8 to smartfs v1.1.0
+11 -10
View File
@@ -27,10 +27,10 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
```bash ```bash
# Global installation (recommended for CLI usage) # Global installation (recommended for CLI usage)
npm install -g @git.zone/tsdocker pnpm add --global @git.zone/tsdocker
# Or project-local installation # Or project-local installation
pnpm install --save-dev @git.zone/tsdocker pnpm add --save-dev @git.zone/tsdocker
``` ```
## Quick Start ## Quick Start
@@ -146,7 +146,7 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
## Configuration ## Configuration
Configure tsdocker in your `package.json` or `npmextra.json` under the `@git.zone/tsdocker` key: Configure tsdocker in your `.smartconfig.json` under the `@git.zone/tsdocker` key:
```json ```json
{ {
@@ -243,7 +243,8 @@ Every tsdocker invocation gets its own **session** with unique:
- **Session ID** — Random 8-char hex (override with `TSDOCKER_SESSION_ID`) - **Session ID** — Random 8-char hex (override with `TSDOCKER_SESSION_ID`)
- **Registry port** — Dynamically allocated (override with `TSDOCKER_REGISTRY_PORT`) - **Registry port** — Dynamically allocated (override with `TSDOCKER_REGISTRY_PORT`)
- **Registry container** — Named `tsdocker-registry-<sessionId>` - **Registry container** — Named `tsdocker-registry-<sessionId>`
- **Builder suffix** — In CI, the buildx builder gets a `-<sessionId>` suffix to prevent collisions - **Builder suffix** — Local runs use a stable project hash; CI runs add the session ID to prevent collisions
- **Registry data path** — Local runs use `.nogit/docker-registry/`; CI runs use `.nogit/docker-registry/<sessionId>/`
This prevents resource conflicts when multiple CI jobs run tsdocker in parallel. Auto-detected CI systems: This prevents resource conflicts when multiple CI jobs run tsdocker in parallel. Auto-detected CI systems:
@@ -254,7 +255,7 @@ This prevents resource conflicts when multiple CI jobs run tsdocker in parallel.
| `GITLAB_CI` | GitLab CI | | `GITLAB_CI` | GitLab CI |
| `CI` | Generic CI | | `CI` | Generic CI |
In local dev, no suffix is added — keeping a persistent builder for faster rebuilds. In local dev, the builder suffix is stable per project path, keeping a reusable builder while avoiding collisions between projects. In CI, the session ID is added so parallel jobs do not share builders or registry storage.
### 🔍 Docker Context & Topology Detection ### 🔍 Docker Context & Topology Detection
@@ -557,7 +558,7 @@ tsdocker push
build-and-push: build-and-push:
stage: build stage: build
script: script:
- npm install -g @git.zone/tsdocker - pnpm add --global @git.zone/tsdocker
- tsdocker push - tsdocker push
variables: variables:
DOCKER_REGISTRY_1: 'registry.gitlab.com|$CI_REGISTRY_USER|$CI_REGISTRY_PASSWORD' DOCKER_REGISTRY_1: 'registry.gitlab.com|$CI_REGISTRY_USER|$CI_REGISTRY_PASSWORD'
@@ -568,7 +569,7 @@ build-and-push:
```yaml ```yaml
- name: Build and Push - name: Build and Push
run: | run: |
npm install -g @git.zone/tsdocker pnpm add --global @git.zone/tsdocker
tsdocker login tsdocker login
tsdocker push tsdocker push
env: env:
@@ -580,7 +581,7 @@ build-and-push:
```yaml ```yaml
- name: Build and Push - name: Build and Push
run: | run: |
npm install -g @git.zone/tsdocker pnpm add --global @git.zone/tsdocker
tsdocker push tsdocker push
env: env:
DOCKER_REGISTRY_1: 'gitea.example.com|${{ secrets.REGISTRY_USER }}|${{ secrets.REGISTRY_PASSWORD }}' DOCKER_REGISTRY_1: 'gitea.example.com|${{ secrets.REGISTRY_USER }}|${{ secrets.REGISTRY_PASSWORD }}'
@@ -687,7 +688,7 @@ dist_ts
## License and Legal Information ## License and Legal Information
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file. This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license](./license) file.
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file. **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
@@ -699,7 +700,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
### Company Information ### Company Information
Task Venture Capital GmbH Task Venture Capital GmbH
Registered at District Court Bremen HRB 35230 HB, Germany Registered at District Court Bremen HRB 35230 HB, Germany
For any legal inquiries or further information, please contact us via email at hello@task.vc. For any legal inquiries or further information, please contact us via email at hello@task.vc.
+2 -2
View File
@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tsdocker', name: '@git.zone/tsdocker',
version: '2.2.3', version: '2.2.7',
description: 'develop npm modules cross platform with docker' description: 'A comprehensive Docker build tool for TypeScript projects with multi-arch support, multi-registry push, and CI-safe session isolation.'
} }
+1 -1
View File
@@ -50,7 +50,7 @@ export class TsDockerManager {
// Load project info // Load project info
try { try {
const projectinfoInstance = new plugins.projectinfo.ProjectInfo(paths.cwd); const projectinfoInstance = await plugins.projectinfo.ProjectInfo.create(paths.cwd);
this.projectInfo = { this.projectInfo = {
npm: { npm: {
name: projectinfoInstance.npm.name, name: projectinfoInstance.npm.name,
+1 -1
View File
@@ -67,7 +67,7 @@ CONFIG SUBCOMMANDS
show Show full global config show Show full global config
CONFIGURATION CONFIGURATION
Configure via smartconfig.json under the "@git.zone/tsdocker" key: Configure via .smartconfig.json under the "@git.zone/tsdocker" key:
registries Array of registry URLs to push to registries Array of registry URLs to push to
registryRepoMap Map of registry URL to repo path overrides registryRepoMap Map of registry URL to repo path overrides
+2 -2
View File
@@ -3,8 +3,8 @@ import * as paths from './tsdocker.paths.js';
import type { ITsDockerConfig } from './interfaces/index.js'; import type { ITsDockerConfig } from './interfaces/index.js';
const buildConfig = async (): Promise<ITsDockerConfig> => { const buildConfig = async (): Promise<ITsDockerConfig> => {
const npmextra = new plugins.npmextra.Smartconfig(paths.cwd); const smartconfig = new plugins.smartconfig.Smartconfig(paths.cwd);
const config = npmextra.dataFor<ITsDockerConfig>('@git.zone/tsdocker', { const config = smartconfig.dataFor<ITsDockerConfig>('@git.zone/tsdocker', {
registries: [], registries: [],
registryRepoMap: {}, registryRepoMap: {},
buildArgEnvMap: {}, buildArgEnvMap: {},
+2 -2
View File
@@ -1,6 +1,6 @@
// push.rocks scope // push.rocks scope
import * as lik from '@push.rocks/lik'; import * as lik from '@push.rocks/lik';
import * as npmextra from '@push.rocks/smartconfig'; import * as smartconfig from '@push.rocks/smartconfig';
import * as path from 'path'; import * as path from 'path';
import * as projectinfo from '@push.rocks/projectinfo'; import * as projectinfo from '@push.rocks/projectinfo';
import * as smartcli from '@push.rocks/smartcli'; import * as smartcli from '@push.rocks/smartcli';
@@ -16,7 +16,7 @@ export const smartfs = new SmartFs(new SmartFsProviderNode());
export { export {
lik, lik,
npmextra, smartconfig,
path, path,
projectinfo, projectinfo,
smartcli, smartcli,
+1 -2
View File
@@ -5,8 +5,7 @@
"moduleResolution": "NodeNext", "moduleResolution": "NodeNext",
"esModuleInterop": true, "esModuleInterop": true,
"verbatimModuleSyntax": true, "verbatimModuleSyntax": true,
"baseUrl": ".", "useDefineForClassFields": false
"paths": {}
}, },
"exclude": ["dist_*/**/*.d.ts"] "exclude": ["dist_*/**/*.d.ts"]
} }