1
1
The steps used during the release process, including release candidates
2
2
3
+ Note that the build process will not run if the version is only Major.Minor, for example 2.5,
4
+ and it needs to be in form Major.Minor.Patch, for example 2.5.0
5
+
3
6
## Create release candidate
4
7
5
8
Before a release it is required that a release candidate version is created.
@@ -10,19 +13,20 @@ For example if RC1, but change for RC2 and so on :
10
13
11
14
1 . ` git clone [email protected] :OWASP/threat-dragon.git `
12
15
2 . ` cd threat-dragon `
13
- 3 . update version, for example ` "version": "2.4.1 -RC1", ` , in ` td.vue/package.json `
16
+ 3 . update version, for example ` "version": "2.5.0 -RC1", ` , in ` td.vue/package.json `
14
17
4 . ensure ` buildState ` in ` td.vue/package.json ` is "" (empty)
15
- 5 . update version, for example ` "version": "2.4.1 -RC1", ` , in ` package.json ` and ` td.server/package.json `
18
+ 5 . update version, for example ` "version": "2.5.0 -RC1", ` , in ` package.json ` and ` td.server/package.json `
16
19
6 . update package lock files: ` npm install `
17
20
7 . ` npm run build `
18
21
8 . ` npm test `
19
22
9 . ` npm run test:vue `
20
23
10 . ensure that the package-lock files are up to date using ` npm install `
21
24
11 . ` git add --all; git status `
22
- 12 . ` git commit -m"release candidate 2.4.1 -RC1" `
25
+ 12 . ` git commit -m"release candidate 2.5.0 -RC1"; git status `
23
26
13 . ` git push `
24
- 14 . tag the release ` git tag v2.4.1-RC1 `
25
- 15 . ` git push origin v2.4.1-RC1 `
27
+ 14 . tag the release ` git tag v2.5.0-RC1 `
28
+ 15 . ` git push origin v2.5.0-RC1 `
29
+ 16 . ` git status `
26
30
27
31
repeat as necessary for further release candidates.
28
32
@@ -49,18 +53,18 @@ After the releases candidate has been agreed by the Threat Dragon community, a r
49
53
50
54
1 . ` git clone [email protected] :OWASP/threat-dragon.git `
51
55
2 . ` cd threat-dragon `
52
- 3 . update version eg ` "version": "2.4.1 ", ` , in ` package.json ` , ` td.vue/package.json ` and ` td.server/package.json `
56
+ 3 . update version eg ` "version": "2.5.0 ", ` , in ` package.json ` , ` td.vue/package.json ` and ` td.server/package.json `
53
57
4 . update ` buildState ` in ` td.vue/package.json ` away from ` -latest ` to "" (empty)
54
58
5 . update package lock files: ` npm install `
55
59
6 . ` npm run build `
56
60
7 . ` npm test `
57
61
8 . ` npm run test:vue `
58
62
9 . ensure that the package-lock files are up to date using ` npm install `
59
63
10 . ` git add --all; git status `
60
- 11 . ` git commit -m"release version 2.4.1 " `
64
+ 11 . ` git commit -m"release version 2.5.0 " `
61
65
12 . ` git push `
62
- 13 . tag the release ` git tag v2.4.1 `
63
- 14 . ` git push origin v2.4.1 `
66
+ 13 . tag the release ` git tag v2.5.0 `
67
+ 14 . ` git push origin v2.5.0 `
64
68
65
69
The github release workflow then creates the draft release and the install images
66
70
@@ -70,33 +74,33 @@ Ensure the tag now exists within the [Threat Dragon Docker hub][td-dock].
70
74
Do this after logging into an active Docker account using ` docker login ` from the CLI and running Docker Desktop.
71
75
72
76
1 . once tagged, the github workflow pushes the docker image to docker hub
73
- 2 . pull image for an X86 platform using ` docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.4.1 `
74
- 3 . pull image for an ARM platform using ` docker pull --platform linux/arm64 threatdragon/owasp-threat-dragon:v2.4.1 -arm64 `
77
+ 2 . pull image for an X86 platform using ` docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.5.0 `
78
+ 3 . pull image for an ARM platform using ` docker pull --platform linux/arm64 threatdragon/owasp-threat-dragon:v2.5.0 -arm64 `
75
79
4 . Test using the command to run a detached container:
76
- ` docker run -d -p 8080:3000 -v $(pwd)/.env:/app/.env threatdragon/owasp-threat-dragon:v2.4.1 `
80
+ ` docker run -d -p 8080:3000 -v $(pwd)/.env:/app/.env threatdragon/owasp-threat-dragon:v2.5.0 `
77
81
5 . Test the ARM container as well:
78
- ` docker run -d -p 8080:3000 -v $(pwd)/.env:/app/.env threatdragon/owasp-threat-dragon:v2.4.1 -arm64 `
82
+ ` docker run -d -p 8080:3000 -v $(pwd)/.env:/app/.env threatdragon/owasp-threat-dragon:v2.5.0 -arm64 `
79
83
6 . Ideally test these releases on Windows, linux and MacOS using ` http://localhost:8080/#/ `
80
84
81
85
If the image tests correctly, promote the docker image from dockerhub ` threatdragon/ `
82
- to dockerhub ` OWASP/threat-dragon/v2.4.1 ` and ` OWASP/threat-dragon/v2.4.1 -arm64 ` .
86
+ to dockerhub ` OWASP/threat-dragon/v2.5.0 ` and ` OWASP/threat-dragon/v2.5.0 -arm64 ` .
83
87
84
88
There is _ no going back_ on these steps, so they are deliberately left as manual tasks:
85
89
86
90
``` text
87
- docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.4.1
88
- docker tag threatdragon/owasp-threat-dragon:v2.4.1 owasp/threat-dragon:v2.4.1
89
- docker push owasp/threat-dragon:v2.4.1
90
- docker pull owasp/threat-dragon:v2.4.1
91
+ docker pull --platform linux/x86_64 threatdragon/owasp-threat-dragon:v2.5.0
92
+ docker tag threatdragon/owasp-threat-dragon:v2.5.0 owasp/threat-dragon:v2.5.0
93
+ docker push owasp/threat-dragon:v2.5.0
94
+ docker pull owasp/threat-dragon:v2.5.0
91
95
92
- docker tag owasp/threat-dragon:v2.4.1 owasp/threat-dragon:stable
96
+ docker tag owasp/threat-dragon:v2.5.0 owasp/threat-dragon:stable
93
97
docker push owasp/threat-dragon:stable
94
98
docker pull owasp/threat-dragon:stable
95
99
96
- docker pull --platform linux/arm64 threatdragon/owasp-threat-dragon:v2.4.1 -arm64
97
- docker tag threatdragon/owasp-threat-dragon:v2.4.1 -arm64 owasp/threat-dragon:v2.4.1 -arm64
98
- docker push owasp/threat-dragon:v2.4.1 -arm64
99
- docker pull owasp/threat-dragon:v2.4.1 -arm64
100
+ docker pull --platform linux/arm64 threatdragon/owasp-threat-dragon:v2.5.0 -arm64
101
+ docker tag threatdragon/owasp-threat-dragon:v2.5.0 -arm64 owasp/threat-dragon:v2.5.0 -arm64
102
+ docker push owasp/threat-dragon:v2.5.0 -arm64
103
+ docker pull owasp/threat-dragon:v2.5.0 -arm64
100
104
```
101
105
102
106
ensure the tag now exists within the [ OWASP Docker hub] [ owasp-dock ] .
@@ -112,14 +116,14 @@ ensure the tag now exists within the [OWASP Docker hub][owasp-dock].
112
116
113
117
### Checksum for Linux desktop AppImage
114
118
115
- Download desktop AppImage for Linux ` Threat-Dragon-ng-2.4.1 .AppImage ` and the ` latest-linux.yml ` auto-update checksum file.
119
+ Download desktop AppImage for Linux ` Threat-Dragon-ng-2.5.0 .AppImage ` and the ` latest-linux.yml ` auto-update checksum file.
116
120
117
121
Create SHA512 ` checksum-linux.yml ` file:
118
122
119
123
``` bash
120
124
grep sha512 latest-linux.yml | tail -n 1 | cut -d " :" -f 2 | base64 -d | \
121
125
hexdump -ve ' 1/1 "%.2x"' > checksum-linux.yml
122
- echo -n " Threat-Dragon-ng-2.4.1 .AppImage" >> checksum-linux.yml
126
+ echo -n " Threat-Dragon-ng-2.5.0 .AppImage" >> checksum-linux.yml
123
127
```
124
128
125
129
Check correct using: ` sha512sum --check checksum-linux.yml `
@@ -150,58 +154,58 @@ The secrets for both signing and notarization can be checked by running it manua
150
154
- provide the [ code signing certs for MacOS] [ certs ]
151
155
- Download both x86 and arm64 files for the MacOS installer (` *.dmg ` and ` *.zip ` )
152
156
- ensure that the apple developer [ environment is set up] [ notarize ]
153
- - notarize and staple the ` Threat-Dragon-ng-2.x.x-arm64.dmg ` file for arm64, using version 2.4.1 as an example:
157
+ - notarize and staple the ` Threat-Dragon-ng-2.x.x-arm64.dmg ` file for arm64, using version 2.5.0 as an example:
154
158
- ` xcrun notarytool submit --apple-id <apple-account-email> --team-id <teamid> \ `
155
- ` --password <password> --verbose --wait Threat-Dragon-ng-2.4.1 -arm64.dmg `
156
- - ` xcrun stapler staple --verbose Threat-Dragon-ng-2.4.1 -arm64.dmg `
159
+ ` --password <password> --verbose --wait Threat-Dragon-ng-2.5.0 -arm64.dmg `
160
+ - ` xcrun stapler staple --verbose Threat-Dragon-ng-2.5.0 -arm64.dmg `
157
161
- similarly for the x86 image ` Threat-Dragon-ng-2.x.x.dmg ` :
158
162
- ` xcrun notarytool submit --apple-id <apple-account-email> --team-id <teamid> \ `
159
- ` --password <password> --verbose --wait Threat-Dragon-ng-2.4.1 .dmg `
160
- - ` xcrun stapler staple --verbose Threat-Dragon-ng-2.4.1 .dmg `
161
- - notarize the application in both` .zip ` files, for example using version 2.4.1 :
163
+ ` --password <password> --verbose --wait Threat-Dragon-ng-2.5.0 .dmg `
164
+ - ` xcrun stapler staple --verbose Threat-Dragon-ng-2.5.0 .dmg `
165
+ - notarize the application in both` .zip ` files, for example using version 2.5.0 :
162
166
- ` xcrun notarytool submit --apple-id <apple-account-email> --team-id <teamid> \ `
163
- ` --password <password> --verbose --wait Threat-Dragon-ng-2.4.1 -arm64-mac.zip `
167
+ ` --password <password> --verbose --wait Threat-Dragon-ng-2.5.0 -arm64-mac.zip `
164
168
- unzip the file to obtain the application directory ` Threat-Dragon-ng.app `
165
169
- check notarization worked: ` spctl -a -v Threat-Dragon-ng.app `
166
170
- staple the application: ` xcrun stapler staple --verbose Threat-Dragon-ng.app `
167
171
- zip the application directory to get: ` Threat-Dragon-ng.zip `
168
- - rename ` Threat-Dragon-ng.zip ` to update ` Threat-Dragon-ng-2.4.1 -arm64-mac.zip `
172
+ - rename ` Threat-Dragon-ng.zip ` to update ` Threat-Dragon-ng-2.5.0 -arm64-mac.zip `
169
173
- similarly for the x86 application ` zip ` file :
170
174
- ` xcrun notarytool submit --apple-id <apple-account-email> --team-id <teamid> \ `
171
- ` --password <password> --verbose --wait Threat-Dragon-ng-2.4.1 -mac.zip `
175
+ ` --password <password> --verbose --wait Threat-Dragon-ng-2.5.0 -mac.zip `
172
176
- unzip the file to obtain the application directory ` Threat-Dragon-ng.app `
173
177
- check notarization worked: ` spctl -a -v Threat-Dragon-ng.app `
174
178
- staple the application: ` xcrun stapler staple --verbose Threat-Dragon-ng.app `
175
179
- zip the application directory to get: ` Threat-Dragon-ng.zip `
176
- - rename ` Threat-Dragon-ng.zip ` to update ` Threat-Dragon-ng-2.4.1 -mac.zip `
180
+ - rename ` Threat-Dragon-ng.zip ` to update ` Threat-Dragon-ng-2.5.0 -mac.zip `
177
181
178
182
Fix up the checksums in ` latest-mac.yml ` values using script:
179
183
180
184
``` bash
181
- openssl dgst -binary -sha512 Threat-Dragon-ng-2.4.1 -mac.zip | openssl base64 -A
182
- ls -l Threat-Dragon-ng-2.4.1 -mac.zip
185
+ openssl dgst -binary -sha512 Threat-Dragon-ng-2.5.0 -mac.zip | openssl base64 -A
186
+ ls -l Threat-Dragon-ng-2.5.0 -mac.zip
183
187
184
- openssl dgst -binary -sha512 Threat-Dragon-ng-2.4.1 -arm64-mac.zip | openssl base64 -A
185
- ls -l Threat-Dragon-ng-2.4.1 -arm64-mac.zip
188
+ openssl dgst -binary -sha512 Threat-Dragon-ng-2.5.0 -arm64-mac.zip | openssl base64 -A
189
+ ls -l Threat-Dragon-ng-2.5.0 -arm64-mac.zip
186
190
187
- openssl dgst -binary -sha512 Threat-Dragon-ng-2.4.1 .dmg | openssl base64 -A
188
- ls -l Threat-Dragon-ng-2.4.1 .dmg
191
+ openssl dgst -binary -sha512 Threat-Dragon-ng-2.5.0 .dmg | openssl base64 -A
192
+ ls -l Threat-Dragon-ng-2.5.0 .dmg
189
193
190
- openssl dgst -binary -sha512 Threat-Dragon-ng-2.4.1 -arm64.dmg | openssl base64 -A
191
- ls -l Threat-Dragon-ng-2.4.1 -arm64.dmg
194
+ openssl dgst -binary -sha512 Threat-Dragon-ng-2.5.0 -arm64.dmg | openssl base64 -A
195
+ ls -l Threat-Dragon-ng-2.5.0 -arm64.dmg
192
196
```
193
197
194
198
Create the checksum files:
195
199
196
- - ` sha512sum Threat-Dragon-ng-2.4.1 .dmg > checksum-mac.yml `
197
- - ` sha512sum Threat-Dragon-ng-2.4.1 -arm64.dmg > checksum-mac-arm64.yml `
200
+ - ` sha512sum Threat-Dragon-ng-2.5.0 .dmg > checksum-mac.yml `
201
+ - ` sha512sum Threat-Dragon-ng-2.5.0 -arm64.dmg > checksum-mac-arm64.yml `
198
202
199
203
Upload files into the new release:
200
204
201
- - ` Threat-Dragon-ng-2.4.1 -mac.zip `
202
- - ` Threat-Dragon-ng-2.4.1 -arm64-mac.zip `
203
- - ` Threat-Dragon-ng-2.4.1 .dmg `
204
- - ` Threat-Dragon-ng-2.4.1 -arm64.dmg `
205
+ - ` Threat-Dragon-ng-2.5.0 -mac.zip `
206
+ - ` Threat-Dragon-ng-2.5.0 -arm64-mac.zip `
207
+ - ` Threat-Dragon-ng-2.5.0 .dmg `
208
+ - ` Threat-Dragon-ng-2.5.0 -arm64.dmg `
205
209
- ` checksum-mac.yml `
206
210
- ` checksum-mac-arm64.yml `
207
211
- ` latest-mac.yml `
@@ -229,15 +233,15 @@ The latest certificate is provided using Certum's Open Source certificate:
229
233
4 . ensure Powershell has the ` signtool ` utility installed from Windows SDK
230
234
5 . right click the icon in the desktop tray to select ‘Connect to SimplySign’
231
235
6 . gain a thumbprint from desktop tray icon, Manage certificates → Certificate list → Details → Thumbprint
232
- 7 . ` signtool sign /sha1 "<thumbprint>" /tr http://time.certum.pl /td sha256 /fd sha256 /v "Threat-Dragon-ng-Setup-2.4.1 .exe" `
236
+ 7 . ` signtool sign /sha1 "<thumbprint>" /tr http://time.certum.pl /td sha256 /fd sha256 /v "Threat-Dragon-ng-Setup-2.5.0 .exe" `
233
237
234
- Once signed create the checksum file: ` sha512sum Threat-Dragon-ng-Setup-2.4.1 .exe > checksum.yml `
238
+ Once signed create the checksum file: ` sha512sum Threat-Dragon-ng-Setup-2.5.0 .exe > checksum.yml `
235
239
236
240
Fix up the file ` latest.yml ` with the correct size and the SHA256 value given by:
237
241
238
- - ` openssl dgst -binary -sha512 Threat-Dragon-ng-Setup-2.4.1 .exe | openssl base64 -A `
242
+ - ` openssl dgst -binary -sha512 Threat-Dragon-ng-Setup-2.5.0 .exe | openssl base64 -A `
239
243
240
- Upload files ` Threat-Dragon-ng-Setup-2.4.1 .exe ` , ` checksum.yml ` and ` latest.yml ` into the new release.
244
+ Upload files ` Threat-Dragon-ng-Setup-2.5.0 .exe ` , ` checksum.yml ` and ` latest.yml ` into the new release.
241
245
Note that the original files of the same name need to be removed first.
242
246
243
247
### Confirm desktop checksums
@@ -261,7 +265,7 @@ Edit the 'What's Changed' to filter out any chores.
261
265
262
266
Then update the release notes for the draft in the [ Threat Dragon release area] [ area ]
263
267
using the release notes using markdown provided by ` .release-note-template.md ` as a template,
264
- making sure to revise ` 2.x.x ` to the correct version number such as ` 2.4.1 `
268
+ making sure to revise ` 2.x.x ` to the correct version number such as ` 2.5.0 `
265
269
266
270
Once everything is in place promote the release from 'draft' to 'public' and 'latest'
267
271
0 commit comments