Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Add Continuous Delivery #145

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

WIP: Add Continuous Delivery #145

wants to merge 4 commits into from

Conversation

Ceda-EI
Copy link

@Ceda-EI Ceda-EI commented May 4, 2020

  • Do Linux Builds
  • Do Windows Builds
  • Do MacOS Builds

Example builds were run on the test-ci branch of my fork.

Do not publish when running pack. Seperate build from package.
publish.yml currently builds the package, then packages it on tags,
creates a pre-release if the tag contains rc or beta, else creates a
release, uploads the deb, AppImage, rpm to the release.
@Ceda-EI
Copy link
Author

Ceda-EI commented May 6, 2020

The failing CI seems to be unrelated.

@hellais
Copy link
Member

hellais commented Jun 3, 2020

This is really cool! Thanks for putting it together!

You are right that the CI build on macOS has been causing quite some issues, as a matter of fact I am now going to disable it until we find why it's not working well (see: ooni/probe#1157).

I don't know so much about linux app distribution, so maybe @FedericoCeratto or @sarathms can look at that part and see if it makes sense to integrate this.

WRT the macOS and windows builds, the challenge with doing CD on those is that we would have to give our code signing keys to github, which I think we should first carefully discuss and evaluate the tradeoffs of that approach.

That said, maybe we can just have unsigned developer builds made using this process and keep the "standard" process for signed builds.

This PR relevant to: ooni/probe#1091.

@Ceda-EI
Copy link
Author

Ceda-EI commented Jun 4, 2020

I actually raised the concern about the need of signing keys to be uploaded to github in the IRC. On top of that, Github does not have any mechanism for uploading secret files into the build. Github's recommended approach is committing an encrypted version of the key to repo and then adding the password to it as a secret. Source.

Copy link
Contributor

@sarathms sarathms left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Ceda-EI Thanks for working on this (and apologies for the late response)

  1. One of the important features we wanted to ensure was the ability to update the app with as little friction as possible. The currently supported Mac and Windows apps make use of electron's auto-update to update silently without user intervention.
  2. For this to work, the release should include the latest-linux.yml file found in the same directory (./dist/)
  3. For Linux, this is auto-update mechanism only works with the AppImage builds. So, when we start supporting Linux, we should start uploading the *.AppImage file and the latest-linux.yml as release assets.
  4. For deb and rpm packages, we believe Github Releases is not an appropriate distribution channel because it affects upgradability as mentioned earlier. Instead, we intend to maintain repositories on bintray. We could modify the Upload Deb and Upload RPM steps in this workflow to upload to bintray repos (or use other actions). But electron-builder natively supports uploading to bintray (also github and a bunch of others) and maybe we can avoid doing the same thing in the workflow here.

We haven't converged on how we want to handle the codesigning part of the process. We have this topic in the agenda for an upcoming meeting this week in which we should be able to decide how we want to handle this in the long term. Although there are alternative ideas to convert his PR into something that addresses ooni/probe#1091, I think it is best to wait and proceed once we have some more clarity.

@@ -29,6 +29,7 @@
"appId": "org.ooni.probe-desktop",
"productName": "OONI Probe",
"asar": true,
"artifactName": "${productName}.${ext}",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is useful to have the version number in filename.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants