Skip to content

Commit 23b42d6

Browse files
authored
Merge pull request #722 from ooni/desktop-cd
Desktop CD workflow
2 parents fb31201 + b714f60 commit 23b42d6

File tree

5 files changed

+95
-25
lines changed

5 files changed

+95
-25
lines changed

.github/workflows/desktop_make.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Desktop package apps
2+
on: workflow_dispatch
3+
4+
jobs:
5+
package:
6+
name: Package desktop apps
7+
runs-on: ubuntu-latest
8+
9+
steps:
10+
- uses: actions/checkout@v4
11+
12+
- name: Setup
13+
uses: ./.github/actions/setup
14+
15+
- name: Package app
16+
run: ./gradlew copyBrandingToCommonResources package -Porganization=ooni
17+
18+
- name: Conveyor make site
19+
uses: hydraulic-software/conveyor/actions/build@v18.0
20+
env:
21+
APPLE_ASP: ${{ secrets.APPLE_ASP }}
22+
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
23+
APPLE_ID: ${{ secrets.APPLE_ID }}
24+
with:
25+
command: make site
26+
signing_key: ${{ secrets.CONVEYOR_SIGNING_KEY }}
27+
extra_flags: -f ci.conveyor.conf
28+
agree_to_license: 1
29+
30+
- name: Upload artifacts
31+
uses: actions/upload-artifact@v4
32+
with:
33+
name: desktopApps
34+
path: output

certificates/apple.cer

1.49 KB
Binary file not shown.

ci.conveyor.conf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
include required("conveyor.conf")
2+
3+
app {
4+
mac {
5+
certificate = "certificates/apple.cer"
6+
notarization {
7+
app-specific-password = ${env.APPLE_ASP}
8+
team-id = ${env.APPLE_TEAM_ID}
9+
apple-id = ${env.APPLE_ID}
10+
}
11+
}
12+
}

conveyor.conf

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,27 @@ include "#!./gradlew -q composeApp:printConveyorConfig"
22

33
// Config file documentation: https://conveyor.hydraulic.dev/latest/configs
44
app {
5-
vcs-url = "github.com/ooni/probe-multiplatform"
5+
vcs-url = "github.com/ooni/probe-multiplatform"
66

7-
// This is optional. If not specified the last component of the rdns name will be turned into a display name.
8-
display-name = "OONI Probe"
7+
// This is optional. If not specified the last component of the rdns name will be turned into a display name.
8+
display-name = "OONI Probe"
99

10-
// A global identifier for the app.
11-
rdns-name = "org.ooni.probe"
10+
// A global identifier for the app.
11+
rdns-name = "org.ooni.probe"
1212

13-
// For iteration speed. Remove for release.
14-
compression-level = low
13+
// For iteration speed. Remove for release.
14+
compression-level = low
1515

16-
// Check for and apply updates synchronously on every app launch instead of in the background.
17-
// updates = aggressive
16+
// Check for and apply updates synchronously on every app launch instead of in the background.
17+
// updates = aggressive
1818

19-
mac.info-plist.LSMinimumSystemVersion = "10.15.0"
19+
mac.info-plist.LSMinimumSystemVersion = "10.15.0"
2020

21-
url-schemes = [ ooni ]
21+
url-schemes = [ ooni ]
2222

23-
icons = "icons/app.svg"
23+
icons = "icons/app.svg"
24+
25+
machines = ["windows.amd64", "mac"]
2426
}
2527

2628
app.linux.desktop-file."Desktop Entry" {

docs/Release.md

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,52 +77,46 @@ press *Run Workflow*. Confirm both actions run successfully.
7777

7878
Once the alpha versions have been approved for release, we can start publishing.
7979

80-
#### 2.1 Tag & Create Release
80+
#### 2.1 Tag & Merge Release
8181

82-
2.1.1 Tag the latest commit on the release branch:
82+
**2.1.1** Tag the latest commit on the release branch:
8383

8484
```
8585
git tag -s v[x.y.z] -f -m "[x.x.x] release"
8686
git push origin tag v[x.y.z]
8787
```
8888

89-
2.1.2 Merge the release branch PR into `main`, always through a merge commit! We don't want to lose
89+
**2.1.2** Merge the release branch PR into `main`, always through a merge commit! We don't want to lose
9090
our tagged commit.
9191

92-
2.1.3 Create a new [Github release](https://github.com/ooni/probe-multiplatform/releases) based on
93-
the new tag and write the release notes.
94-
95-
The new Github release should create new release on Sentry to help with error reporting, and publish
96-
an internal Slack message warning of the new incoming release.
97-
9892
#### 2.2 Publish iOS Apps
9993

10094
Go to [Publish iOS Apps](https://github.com/ooni/probe-multiplatform/actions/workflows/publish_ios.yml),
10195
press *Run Workflow*, use workflow from the new tag, pick both apps and press *Run Workflow*.
10296
Confirm both actions run successfully. The updates will be reviewed by Apple, so we need to keep an
10397
eye if they pass.
10498

105-
#### 2.2 Publish OONI Probe Android on F-Droid
99+
#### 2.3 Publish OONI Probe Android on F-Droid
106100

107101
By pushing a new tag on Github, F-Droid bots will check if our app `versionCode` was updated. Since
108102
it was, they will trigger a new build and release it automatically. It should take around 3 days for
109103
the new release to be available [here](https://f-droid.org/en/packages/org.openobservatory.ooniprobe/)
110104
but sometimes it can take more time.
111105

112-
#### 2.3 Publish OONI Probe Android on Huawei AppGallery
106+
#### 2.4 Publish OONI Probe Android on Huawei AppGallery
113107

114108
Go to [Publish OONI Probe on Huawei AppGallery](https://github.com/ooni/probe-multiplatform/actions/workflows/publish_android_on_huawei.yml),
115109
press *Run Workflow*, use workflow from the new tag and press *Run Workflow*. Confirm the action ran
116110
successfully.
117111

118-
#### 2.4 Promote News Media Scan Android
112+
#### 2.5 Promote News Media Scan Android
119113

120114
Go to [Promote Android on Google Play](https://github.com/ooni/probe-multiplatform/actions/workflows/promote_android_on_google_play.yml),
121115
press *Run Workflow*, pick the Organization `dw`, the Current Track
122116
`alpha`, the Promote Track `production` and press *Run Workflow*. Confirm the action ran
123117
successfully.
124118

125-
#### 2.5 Promote OONI Probe Android
119+
#### 2.6 Promote OONI Probe Android
126120

127121
Since this is our app with the biggest amount of users, we take more steps to release it. First we
128122
promote from `alpha` to `beta`, and then from `beta` to `production` with a `0.2` (20%) rollout
@@ -131,6 +125,34 @@ value.
131125
Both steps are done at [Promote Android on Google Play](https://github.com/ooni/probe-multiplatform/actions/workflows/promote_android_on_google_play.yml) like on the previous step, but with the
132126
Organization as `ooni`.
133127

128+
#### 2.7 Publish OONI Probe Desktop
129+
130+
#### 2.7.1 Generate apps
131+
132+
Go to [Desktop package apps](https://github.com/ooni/probe-multiplatform/actions/workflows/desktop_make.yml),
133+
press *Run Workflow*, use workflow from the new tag, and press *Run Workflow*. Confirm the action ran
134+
successfully and download the generated apps (zipped artifact).
135+
136+
#### 2.7.2 Sign windows app
137+
138+
We need to sign both the windows `.exe` and `.msix` files using our Extended Validation certificate.
139+
Follow the steps on our internal process to do so.
140+
141+
### 2.8 Create Release
142+
143+
**2.8.1** Create a new [Github release](https://github.com/ooni/probe-multiplatform/releases)
144+
based on the new tag.
145+
146+
**2.8.2** Write our manual release notes and add at the bottom the automatic changelog using the
147+
`Generate release notes` button.
148+
149+
**2.8.3** Upload all the desktop files downloaded during step *2.7.1*, except the `download.html`
150+
file, and swapping the windows `.exe` and `.msix` files for their signed versions (step *2.7.2*).
151+
152+
**2.8.4** Publish release
153+
154+
The new Github release post an internal Slack message warning of the new incoming release.
155+
134156
## Monitoring
135157

136158
We use Sentry to monitor for crashes and handled errors. We have specific views for:

0 commit comments

Comments
 (0)