MonitorControl icon indicating copy to clipboard operation
MonitorControl copied to clipboard

CI & Automatic Updates

Open the0neyouseek opened this issue 8 years ago • 21 comments

This issue is to simplify the debug and release process :

  • [ ] Add a ci service to compile and deploy the new releases to github.
  • [ ] Add an auto-update feature (with options to enable/disable the auto check for new releases) with something like @macmade/GitHubUpdates

the0neyouseek avatar Jan 02 '18 10:01 the0neyouseek

I think an auto-update feature would be awesome! I can look into implementing this if you want.

I'd suggest the following things to be in there:

  • Automatically look for updates on app launch
  • Add a button "Check for updates..." to the menulet
  • Add a setting to enable/disable checking for updates on launch

Is there a specific CI service you'd prefer? I'm personally only experienced with TravisCI but I'm fine with whatever.

JoniVR avatar May 08 '19 19:05 JoniVR

@JoniVR Hi, I've used CircleCI which works great with macOS/iOS but anything is fine for me (We could also add a bagde to the readme)

For automatic updates I've found this :

  • https://github.com/macmade/GitHubUpdates
  • https://github.com/sparkle-project/Sparkle

the0neyouseek avatar May 08 '19 19:05 the0neyouseek

I've used CircleCI which works great with macOS/iOS but anything is fine for me

CircleCI seems to be the more populair choice these days yes. I'm fine with that.

(We could also add a badge to the readme)

Yup, would be useful.

For automatic updates I've found this :

  • https://github.com/macmade/GitHubUpdates
  • https://github.com/sparkle-project/Sparkle

I wasn't aware of GitHubUpdates before, I've seen Sparkle before. I think Sparkle is generally more used and more supported, however, it looks like GitHubUpdates is a lot easier to implement. So I'm not sure, I found a nice article on using sparkle with github though.

JoniVR avatar May 08 '19 19:05 JoniVR

I also think that Sparkle is the safe bet here as GithubUpdates doesn't seem maintained 👍

the0neyouseek avatar May 08 '19 19:05 the0neyouseek

For the CI part, if/when we get to it, Github CI seems to be pretty good now from my experience, maybe that would be a better option now?

JoniVR avatar Apr 02 '20 12:04 JoniVR

💯% agree with that

Le jeu. 2 avr. 2020 à 14:53, Joni Van Roost [email protected] a écrit :

For the CI part, if/when we get to it, Github CI seems to be pretty good now from my experience, maybe that would be a better option now?

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/the0neyouseek/MonitorControl/issues/5#issuecomment-607827619, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA6SZV4RYYV4BXHNMTVBSPDRKSDENANCNFSM4EKB5KZQ .

the0neyouseek avatar Apr 02 '20 17:04 the0neyouseek

I added sparkle 2 for updates.

waydabber avatar Sep 29 '21 11:09 waydabber

@waydabber Did you find a way to auto-generate the AppCast xml file ?

the0neyouseek avatar Sep 29 '21 11:09 the0neyouseek

Nope, I just added the app side of the things but did not work on automation at all so there is room for improvement. :)

waydabber avatar Sep 29 '21 11:09 waydabber

But as far as I see the appcast xml can easily be edited manually so we could put together a script that automates everything from signing to publishing. But since I could not even apply for an Apple developer membership (somehow my application failed instantly after I enrolled and I should 'contact Apple' but the form offered is broken), I can't even sign or notarize the app so I have hard time trying out the whole process. I hope you or @JoniVR will help. It would be nice if 4.0.0 betas and then stable versions could auto-update (I recommend having a separate beta and stable appcast channel).

waydabber avatar Sep 29 '21 11:09 waydabber

@waydabber I was planning on adapting this script I found : https://github.com/lwouis/alt-tab-macos/blob/master/scripts/update_appcast.sh

For signing @JoniVR could you invite @waydabber and I to your development team in App Store Connect ? This would allow us to sign and notarize the app I think

the0neyouseek avatar Sep 29 '21 11:09 the0neyouseek

Nice, a script like that would work nicely with the appcast. It would be really great if there were be a simple scripted process to build and publish the app, both as pre-release and release!

waydabber avatar Sep 29 '21 11:09 waydabber

We could use Fastlane for that

the0neyouseek avatar Sep 29 '21 11:09 the0neyouseek

For signing @JoniVR could you invite @waydabber and I to your development team in App Store Connect ? This would allow us to sign and notarize the app I think

IIRC from my work place, an organisational account requires a D.U.N.S number, which requires a legal entity, not sure though. See: https://developer.apple.com/programs/enroll/

I'd be happy to help with everything else. I agree Sparkle is pretty important.

JoniVR avatar Sep 29 '21 11:09 JoniVR

@JoniVR Can you not add users to your personal account (if that's what you use to sign) and restrict access using roles ?

the0neyouseek avatar Sep 29 '21 12:09 the0neyouseek

I think I might be able to do it through App Store connect, judging by: https://help.apple.com/developer-account/#/dev3e8818774

That would require registering the bundle identifier in App Store Connect though. I'll look into it.

JoniVR avatar Sep 29 '21 18:09 JoniVR

Reopened because I want to keep this visible until we get it all up-and-running if you don't mind.

JoniVR avatar Sep 29 '21 20:09 JoniVR

Nice, a script like that would work nicely with the appcast. It would be really great if there were be a simple scripted process to build and publish the app, both as pre-release and release!

Theoretically, We should be able to create a Github workflow that will be triggered when creating a tag, and then make it create a release based on that, updating appcast etc, but that might be quite a lot of work. Good news is that Apple created a better tool for notarising this year, still have to look into that too.

JoniVR avatar Sep 29 '21 20:09 JoniVR

Reopened because I want to keep this visible until we get it all up-and-running if you don't mind.

Yes of course, I just bulk closed all with the done tag.

waydabber avatar Sep 29 '21 21:09 waydabber

sidenote - here are some ideas and existing solutions to make Sparkle work from GitHub:

https://github.com/sparkle-project/Sparkle/issues/648

waydabber avatar Sep 30 '21 12:09 waydabber

Notes on current sparkle to-do (for tracking purposes, step-by-step):

  • [x] Manual implementation using appcast.xml inside /docs folder[^1]
  • [ ] Automation of appcast update through ci workflow (detect when release is created and update appcast.xml through CI) -> store version etc in xcconfig file.
  • [ ] Add different Sparkle channels (stable/beta) along with a toggle in preferences.
  • [ ] Automation of the rest of the signing, notarisation & deployment process, trigger through git tag?
  • [ ] See if members can be added to my developer account for signing etc.

[^1]: This is using the github-pages branch, don't remove this branch for now as we'll use it to update the appcast.xml without Pull Requests for releases.

JoniVR avatar Sep 30 '21 21:09 JoniVR

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require attention? This issue may be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Oct 26 '22 21:10 stale[bot]