diff --git a/package-lock.json b/package-lock.json index 9b9b04016..bd38be3f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "threat-dragon", - "version": "2.1.0", + "version": "2.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "threat-dragon", - "version": "2.1.0", + "version": "2.1.1", "hasInstallScript": true, "license": "Apache-2.0", "devDependencies": { diff --git a/package.json b/package.json index fc7678a3a..428867164 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "threat-dragon", - "version": "2.1.0", + "version": "2.1.1", "private": true, "scripts": { "build": "npm-run-all build:vue build:server", diff --git a/release-process.md b/release-process.md index c6be41e25..98823f58d 100644 --- a/release-process.md +++ b/release-process.md @@ -4,40 +4,40 @@ The steps used during the release process 1. `git clone git@github.com:OWASP/threat-dragon.git` 2. `cd threat-dragon` -3. update version eg `"version": "2.1.0",`, in `package.json`, `td.site/package.json` and `td.server/package.json` +3. update version eg `"version": "2.1.1",`, in `package.json`, `td.site/package.json` and `td.server/package.json` 4. update `buildState` in `td.vue/package.json` away from `-demo`, usually '' 5. `npm install` 6. `npm run build` 7. `npm test` 8. `npm run test:vue` 9. `git add --all; git status` -10. `git commit -m"release version 2.1.0"` +10. `git commit -m"release version 2.1.1"` 11. `git push` -12. tag the release `git tag v2.1.0` -13. `git push origin v2.1.0` +12. tag the release `git tag v2.1.1` +13. `git push origin v2.1.1` The github release workflow then creates the draft release and the install images ### Publish docker image 1. once tagged, the github workflow pushes the docker image to docker hub -2. check using `docker pull threatdragon/owasp-threat-dragon:v2.1.0` +2. check using `docker pull threatdragon/owasp-threat-dragon:v2.1.1` 3. on MacOS M1 this command may need to be used: - `docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.1.0` + `docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.1.1` 4. Test using the command to run a detached container: - `docker run -d -p 8080:3000 -v $(pwd)/.env:/app/.env threatdragon/owasp-threat-dragon:v2.1.0` + `docker run -d -p 8080:3000 -v $(pwd)/.env:/app/.env threatdragon/owasp-threat-dragon:v2.1.1` 5. Ideally test this release on Windows, linux and MacOS using `http://localhost:8080/#/` If the image tests correctly, promote the docker image -from dockerhub `threatdragon/` to dockerhub `OWASP/threat-dragon/v2.1.0`. +from dockerhub `threatdragon/` to dockerhub `OWASP/threat-dragon/v2.1.1`. There is _no going back_ on this last step, so it is deliberately left as a manual task: ```text -docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.1.0 -docker tag threatdragon/owasp-threat-dragon:v2.1.0 owasp/threat-dragon:v2.1.0 -docker push owasp/threat-dragon:v2.1.0 -docker pull owasp/threat-dragon:v2.1.0 +docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.1.1 +docker tag threatdragon/owasp-threat-dragon:v2.1.1 owasp/threat-dragon:v2.1.1 +docker push owasp/threat-dragon:v2.1.1 +docker pull owasp/threat-dragon:v2.1.1 ``` ensure the tag now exists within the OWASP Docker hub: `https://hub.docker.com/r/owasp/threat-dragon/tags` @@ -46,7 +46,7 @@ ensure the tag now exists within the OWASP Docker hub: `https://hub.docker.com/r Update the release notes for the draft in the [Threat Dragon release area][area] using the release notes using markdown provided by `.release-note-template.md` as a template, -making sure to revise `2.x.x` to the correct version number such as `2.1.0` +making sure to revise `2.x.x` to the correct version number such as `2.1.1` Promote the release from draft to public once everything is in place diff --git a/td.server/package-lock.json b/td.server/package-lock.json index bb4d3f839..40f6be09b 100644 --- a/td.server/package-lock.json +++ b/td.server/package-lock.json @@ -1,12 +1,12 @@ { "name": "threat-dragon-server", - "version": "2.1.0", + "version": "2.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "threat-dragon-server", - "version": "2.1.0", + "version": "2.1.1", "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.21.0", diff --git a/td.server/package.json b/td.server/package.json index 5875ab5fd..4ecc1a9ab 100644 --- a/td.server/package.json +++ b/td.server/package.json @@ -1,6 +1,6 @@ { "name": "threat-dragon-server", - "version": "2.1.0", + "version": "2.1.1", "private": true, "scripts": { "build": "npm-run-all clean:dist transpile", diff --git a/td.vue/package-lock.json b/td.vue/package-lock.json index d14ac29b9..650150fd5 100644 --- a/td.vue/package-lock.json +++ b/td.vue/package-lock.json @@ -1,12 +1,12 @@ { "name": "threat-dragon", - "version": "2.1.0", + "version": "2.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "threat-dragon", - "version": "2.1.0", + "version": "2.1.1", "license": "Apache-2.0", "dependencies": { "@antv/x6": "^1.34.14", diff --git a/td.vue/package.json b/td.vue/package.json index fed20feeb..48fbb4694 100644 --- a/td.vue/package.json +++ b/td.vue/package.json @@ -1,7 +1,7 @@ { "name": "threat-dragon", "productName": "Threat Dragon", - "version": "2.1.0", + "version": "2.1.1", "private": true, "scripts": { "build": "vue-cli-service build --no-unsafe-inline", diff --git a/td.vue/src/components/ThreatEditDialog.vue b/td.vue/src/components/ThreatEditDialog.vue index 9618fd381..4f406447b 100644 --- a/td.vue/src/components/ThreatEditDialog.vue +++ b/td.vue/src/components/ThreatEditDialog.vue @@ -161,7 +161,7 @@ import { mapState } from 'vuex'; import { CELL_DATA_UPDATED } from '@/store/actions/cell.js'; -import { THREATMODEL_UPDATE } from '@/store/actions/threatmodel.js'; +import { THREATMODEL_MODIFIED, THREATMODEL_UPDATE } from '@/store/actions/threatmodel.js'; import dataChanged from '@/service/x6/graph/data-changed.js'; import threatModels from '@/service/threats/models/index.js'; @@ -235,6 +235,7 @@ export default { } else { this.number = this.threat.number; } + this.$store.dispatch(THREATMODEL_MODIFIED); }, updateThreat() { const threatRef = this.threat; @@ -252,6 +253,7 @@ export default { threatRef.score = this.threat.score; this.$store.dispatch(CELL_DATA_UPDATED, this.cellRef.data); + this.$store.dispatch(THREATMODEL_MODIFIED); dataChanged.updateStyleAttrs(this.cellRef); } this.hideModal(); @@ -260,6 +262,7 @@ export default { this.cellRef.data.threats = this.cellRef.data.threats.filter(x => x.id !== this.threat.id); this.cellRef.data.hasOpenThreats = this.cellRef.data.threats.length > 0; this.$store.dispatch(CELL_DATA_UPDATED, this.cellRef.data); + this.$store.dispatch(THREATMODEL_MODIFIED); dataChanged.updateStyleAttrs(this.cellRef); }, hideModal() {