balena-supervisor/package.json
Felipe Lalanne f1bd4b8d9b Use tags to track supervised images in docker
The image manager module now uses tags instead of docker IDs as the main
way to identify docker images on the engine. That is, if the target
state image has a name `imageName:tag@digest`, the supervisor will always use
the given `imageName` and `tag` (which may be empty) to tag the image on
the engine after fetching. This PR also adds checkups to ensure
consistency is maintained between the database and the engine.

Using tags allows to simplify query and removal operations, since now
removing the image now means removing tags matching the image name.

Before this change the supervisor relied only on information in the
supervisor database, and used that to remove images by docker ID. However, the docker
id is not a reliable identifier, since images retain the same id between
releases or between services in the same release.

List of squashed commits
- Remove custom type NormalizedImageInfo
- Remove dependency on docker-toolbelt
- Use tags to traack supervised images in docker
- Ensure tag removal occurs in sequence
- Only save database image after download confirmed

Relates-to: #1616 #1579
Change-type: patch
2021-07-26 09:52:25 -04:00

144 lines
4.7 KiB
JSON

{
"name": "balena-supervisor",
"description": "This is balena's Supervisor, a program that runs on IoT devices and has the task of running user Apps (which are Docker containers), and updating them as the balena API informs it to.",
"version": "12.9.5",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/balena-os/balena-supervisor.git"
},
"scripts": {
"start": "./entry.sh",
"build": "npm run release && webpack",
"build:debug": "npm run release && npm run packagejson:copy",
"lint": "balena-lint -e ts -e js --typescript src/ test/ typings/ build-utils/ webpack.config.js && tsc --noEmit && tsc --noEmit --project tsconfig.js.json",
"test": "npm run clean && npm run test-nolint",
"posttest": "npm run lint",
"test-nolint": "npm run test:build && TEST=1 mocha --config test/.mocharc.js",
"test:build": "npm run test-build && npm run testitems:copy && npm run packagejson:copy",
"test:fast": "TEST=1 mocha --config test/.mocharc.fast.js",
"test:debug": "npm run test:build && TEST=1 mocha --inspect-brk --config test/.mocharc.js",
"prettify": "balena-lint -e ts -e js --typescript --fix src/ test/ typings/ build-utils/ webpack.config.js",
"test-build": "tsc --project tsconfig.json",
"release": "tsc --project tsconfig.release.json && mv build/src/* build",
"packagejson:copy": "cp package.json build/",
"testitems:copy": "cp -r test/data build/test/",
"sync": "ts-node sync/sync.ts",
"clean": "rimraf build"
},
"private": true,
"dependencies": {
"dbus": "^1.0.7",
"mdns-resolver": "^1.0.0",
"semver": "^7.3.2",
"sqlite3": "^4.1.1",
"systeminformation": "^5.6.10"
},
"engines": {
"node": "^12.16.2",
"npm": "^6.14.4"
},
"devDependencies": {
"@balena/contrato": "^0.6.0",
"@balena/lint": "^5.1.0",
"@types/bluebird": "^3.5.32",
"@types/chai": "^4.2.16",
"@types/chai-as-promised": "^7.1.3",
"@types/chai-like": "^1.1.0",
"@types/chai-things": "0.0.34",
"@types/common-tags": "^1.8.0",
"@types/copy-webpack-plugin": "^6.0.0",
"@types/dbus": "^1.0.0",
"@types/dockerode": "^2.5.34",
"@types/event-stream": "^3.3.34",
"@types/express": "^4.17.3",
"@types/lockfile": "^1.0.1",
"@types/lodash": "^4.14.159",
"@types/memoizee": "^0.4.4",
"@types/mocha": "^8.2.2",
"@types/mock-fs": "^4.13.0",
"@types/morgan": "^1.9.0",
"@types/node": "^12.12.54",
"@types/request": "^2.48.5",
"@types/rewire": "^2.5.28",
"@types/rimraf": "^2.0.4",
"@types/rwlock": "^5.0.2",
"@types/semver": "^7.3.3",
"@types/shell-quote": "^1.7.0",
"@types/sinon": "^10.0.0",
"@types/sinon-chai": "^3.2.5",
"@types/supertest": "^2.0.11",
"@types/terser-webpack-plugin": "^3.0.0",
"@types/tmp": "^0.1.0",
"@types/webpack": "^4.41.21",
"@types/yargs": "^15.0.12",
"balena-register-device": "^7.2.0",
"blinking": "^0.0.4",
"bluebird": "^3.7.2",
"chai": "^4.3.4",
"chai-as-promised": "^7.1.1",
"chai-like": "^1.1.1",
"chai-things": "^0.2.0",
"chokidar": "^3.5.1",
"common-tags": "^1.8.0",
"copy-webpack-plugin": "^6.0.3",
"deep-object-diff": "^1.1.0",
"docker-delta": "^2.2.11",
"docker-progress": "^4.0.3",
"dockerode": "^2.5.8",
"duration-js": "^4.0.0",
"event-stream": "3.3.4",
"express": "^4.17.1",
"fork-ts-checker-webpack-plugin": "^5.1.0",
"fp-ts": "^2.8.1",
"husky": "^4.2.5",
"io-ts": "^2.2.10",
"io-ts-reporters": "^1.2.2",
"json-mask": "^0.3.9",
"knex": "^0.20.13",
"lint-staged": "^10.2.11",
"livepush": "^3.5.1",
"lockfile": "^1.0.4",
"lodash": "^4.17.21",
"memoizee": "^0.4.14",
"mixpanel": "^0.10.3",
"mocha": "^8.3.2",
"mock-fs": "^4.14.0",
"morgan": "^1.10.0",
"network-checker": "^0.1.1",
"nodemon": "^2.0.4",
"pinejs-client-request": "^7.2.1",
"pretty-ms": "^7.0.1",
"request": "^2.88.2",
"resin-docker-build": "^1.1.6",
"resumable-request": "^2.0.1",
"rewire": "^5.0.0",
"rimraf": "^2.7.1",
"rwlock": "^5.0.0",
"shell-quote": "^1.7.2",
"sinon": "^10.0.0",
"sinon-chai": "^3.6.0",
"strict-event-emitter-types": "^2.0.0",
"supertest": "^6.1.3",
"tar-stream": "^2.1.3",
"terser-webpack-plugin": "^4.1.0",
"tmp": "^0.1.0",
"ts-loader": "^7.0.5",
"ts-node": "^8.10.2",
"typed-error": "^3.2.1",
"typescript": "^4.2.4",
"webpack": "^4.44.1",
"webpack-cli": "^3.3.12",
"winston": "^3.3.3",
"yargs": "^15.4.1"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"versionist": {
"publishedAt": "2021-07-22T15:08:58.689Z"
}
}