From d520b8c6cdec38d85c510d5bf36d2634bdd53cdf Mon Sep 17 00:00:00 2001 From: confused-Techie Date: Sun, 3 Sep 2023 01:16:44 -0700 Subject: [PATCH 01/15] Add Blog post --- .../20230903-confused-Techie-pulsars-ci.md | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 docs/blog/20230903-confused-Techie-pulsars-ci.md diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md new file mode 100644 index 000000000..11f11b325 --- /dev/null +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -0,0 +1,141 @@ +--- +title: "Pulsar's CI" +author: confused-Techie +date: 2023-09-02 +category: + - dev +tag: + - ci +--- + +How Pulsar's CI has recently changed. + + + +CI, or Continuous Integration, is a rather broad term used to describe the DevOps process of continuously (oftentimes on every change) building and testing a piece of software. In Pulsar's case this means two big things: + +- Testing Pulsar and all of it's core packages +- Building Pulsar binaries, and even then running tests using those built binaries. + +To better understand how drastically things have changed, lets quickly take a look how Pulsar's CI has looked up until this month since nearly the beginning of the project. + +## How it was + +Whenever someone made a Pull Request to Pulsar, their code changes would be run through a gauntlet of processes: + +- The entirety of the Pulsar codebase would be have it's tests run on GitHub Actions. +- Every single core package (those that come with Pulsar) would also be tested via GitHub Actions. +- A Pulsar binary was built for every single platform we support, this means Windows, Linux, macOS, Apple Silicon, and ARM Linux. + +The big point of interest today is the process of building the Pulsar binaries. + +On August 17, 2022 [@mauricioszabo] [introduced](https://github.com/pulsar-edit/pulsar/commit/64427f41782ae4a2ab72a81762dc8f2bcb3f2f7e) and created Pulsar's integration with [CirrusCI](https://cirrus-ci.com/). Which is an overall, fantastic CI platform, that at the time had a very generous free tier. So generous in fact that every single binary built for Pulsar, since we started the project, has been built within this free tier. + +As those familiar with the project know, all of our funding comes from our fantastic community, via [OpenCollective](https://opencollective.com/pulsar-edit) and [GitHub Sponsors](https://github.com/sponsors/pulsar-edit), and we aim to be very careful about how we spend the money that is donated to us. At all times ensuring that the money is used in ways that can benefit the majority of our users, and that there is no better alternative for it's purpose. That's why when Cirrus [announced](https://cirrus-ci.org/blog/2023/07/17/limiting-free-usage-of-cirrus-ci/) that they were changing their free tier to something a bit more restrictive we had to scramble and find how we can continue our pace. + +## How it is, and how it got there + +Now, I don't want to come across as ungrateful to the fantastic service that Cirrus offers, so when this price change was first announced, we had originally intended to figure out if we could afford these price changes reasonably. + +To determine what we could afford, we first had to estimate what we would've been paying the past months of usage. [@DeeDeeG] was able to break down exactly what our costs looked like, using our previous months data. + +Keeping in mind that we trigger the same amount of runs per platform, the difference here is how slow or fast any given platform is during the build process: + +| Month | Windows Credits/Hours | Linux Credits/Hours | macOS Credits/Hours | +| ----- | ---------------------- | ---------------------- | ----------------------- | +| May | 66 credits / 273 hours | 72credits / 396 hours | 490 credits / 544 hours | +| July | 55 credits / 229 hours | 39 credits / 213 hours | 305 credits / 339 hours | + +Using this data, where we consider 1 credits = $1 USD, minus the novel 50 free credits, July would've costed $349 USD. We could then realistically estimate that building Pulsar binaries would cost ~$350 USD a month. + +Which when we consider that's a higher price than anything the Pulsar team spends any money on for Pulsar, it's a bit of a tough pill to swallow. But especially because Cirrus isn't the only service out there, no one on the team could justify spending our sponsors money on such a large expense. At this point, we had to determine a way to lower our usage or move off the platform. + +But to move off Cirrus, we had to consider everything it currently does for us: + +- Builds binaries on every Pull Request +- Builds our Regular Release Binaires +- Builds our Rolling Release Binaries (on every commit to `master`) +- Acts as a CDN for our Rolling Release Binaries (The `download` microservice redirects downloads directly to Cirrus) + +At this point, with the above knowledge, we had several different solutions to jugle and consider: + +- We could move to another CI platform, but Cirrus is one of the cheaper ones +- We could move most of our process to GitHub Actions +- We could move everything to non-CI services, such as cloud hosted VMs +- We could store binaires in other cloud storage services, such as GCP or Digital Ocean +- We could slim down our Cirrus usage as much as possible + +But with all of these ideas, as a Do-ocracy, [attempts](https://github.com/pulsar-edit/pulsar/pull/682) began being made to switch as much as possible to GitHub Actions. + +While this did solve a few of our needs from above, it didn't solve all of them, and introduced it's own issues. + +The biggest one, GitHub Actions doesn't support Apple Silicon or ARM Linux. Even though Apple Silicon support is on GitHub's [Roadmap](https://github.com/orgs/github/projects/4247), it has been pushed forward over and over since June 15th, 2022. So this support wasn't something we could rely on. + +In finding a solution to our platform support issue, we looked at quite a few possibilities, at a point we were even considering purchasing an Apple Silicon Mac, second hand, and using GitHub Self Hosted Runners to build there. But of course the simplest answer, would be to only build Apple Silicon on Cirrus, but we had to consider what that would actually come out to. Looking at using all 50 free credits for building only Apple Silicon binaries, would mean getting up to 833.333 minutes within Cirrus, but we had to compare those minutes into what we could acheive: + +**Typical Apple Silicon task run lengths** + +| Run Type | Length in Minutes | Task runs/month | +| ----------------- | ----------------- | --------------- | +| Shortest Recorded | 14.35 | 58 | +| Average | 17.947 | 46 | +| Median | 17.292 | 48 | +| Longest Recorded | 26.6 | 31 | + +So we could estimate to say we could have anywhere from 31-58 macOS runs per month (including re-runs for failures), but that shooting for ~30 macOS runs per month is a safer conservative estimate. + +But, all of this above doesn't account for our ARM Linux runs, that also must stay at Cirrus CI. So we had to consider, within our 50 free credits per month that would get us 8333.333 minutes of Linux builds per month (Which that is not a typo, we are able to get 10x the amount of real-world macOS minutes compared to ARM Linux): + +**Typical ARM Linux task run lengths** + +| Run Type | Length in Minutes | Task runs/month | +| ----------------- | ----------------- | --------------- | +| Shortest Recorded | 28.367 | 293 | +| Median | 30.208 | 275 | +| Average | 32.114 | 259 | +| Longest Recorded | 45.883 | 181 | + +So while it seems we could build these platforms on Cirrus, there was temporarily a concern about if we could choose only one, to keep at our current pace, at this point we had to try and find if we should give any specific platform any priority, to which we turned to our install numbers (gathered from the logs of the `download` microservice): + +**Rolling Release Download count by Platform over the past 30 days**: + +| Platform | Download Count | Download Percentage | +| ------------- | -------------- | ------------------- | +| Apple Silicon | 860 | 15.59% | +| ARM Linux | 109 | 1.97% | +| Windows | 2,370 | 42.98% | +| Intel Mac | 550 | 9.97% | +| Linux | 1,624 | 29.45% | + +With this, we could easily see that if one platform must be prioritized, the numbers say that priority should be given to Apple Silicon, even though, we knew we didn't want to play favourites with platforms. + +It was at this point, we had to break down how many runs we could do for both platforms. If we assume each **build** is one Apple Silicon macOS run and one ARM Linux run: + +| Credit-Cost Build Type | Credits | Builds/month | +| ---------------------- | ------- | ------------ | +| Lowest Recorded | 1.032 | 48 | +| Median | 1.256 | 39 | +| Average | 1.269 | 39 | +| Highest Recorded | 1.766 | 28 | + +With these exact numbers of our current trends, we could then assume we have an allotment of 28 builds per month for these platforms. But consdering the possible need of retries, or a build erroring out, we had settled on building Apple Silicon, and ARM Linux once every other day. Which should give us about 15 builds per month minimum. This would give us a healthy buffer zone, or any retries needed, and the ability to do another run for the regular release every month. + +But even though we now knew what we needed to do, there was still a long list of things we had to change to get there, especially now considering our deadline to do so was only a few days away. + +After a flurry of PR's and lots of testing, the team at Pulsar was able to accomplish all of the following in just under our 5 day limit: + +- Migrated all other platforms over to GitHub Actions +- Ensure binaries are easily downloadable via GitHub Actions for testing purposes +- Configure CRON jobs within Cirrus to build these platforms every two days +- Minimize the amount of times Cirrus would run, ensuring to only run if changes were present, and disallow any other type of run that may occur +- Setup a brand new repository `pulsar-rolling-releases` to act as the CDN for every single rolling release +- Nearly completely rewrite the `download` microservice to now use this new repository to retreive the newest rolling release + +All of that work has culminated in a new CI plan for Pulsar, the one that is currently in effect starting September. On every single PR to the Pulsar repo, a binary will be built for Windows, Linux, and macOS. Once that PR is merged, a new rolling release will automatically be built, again just for these three platforms, which will then be publishing as a new release to the repository [`pulsar-rolling-releases`](https://github.com/pulsar-edit/pulsar-rolling-releases). Once on this repository the `download` microservice will be able to find and return these versions to any users attempting to download a rolling release of Pulsar. Then once every two days, Cirrus will be triggered to build binaries of Apple Silicon and ARM Linux. These new binaries will also be published to `pulsar-rolling-releases`. Then whenever we plan to do a new regular release of Pulsar, once a new tag is created for this release, Cirrus will automatically be triggered to build binaires for it's two platforms. Luckily for us, all of these changes mean we have not incurred any additional cost for the Pulsar project, even though there is some talk of officially supporting Cirrus on Open Collective at a price we can properly afford. + +## Summary + +While this blog post may have been a little data heavy, it's been a very busy time over in Pulsar, and I hope this blog can help explain why some things have changed, and help layout what things look like for the time being. Especially here, a huge thanks goes out to everyone that helped this migration on the Pulsar team, especially a huge thanks to [@DeeDeeG] for their amazing work in not only planning this migration, but enacting it. Additionally, I'd like to give thanks to all the developers at Cirrus, who not only provide an amazing service, especially one that has made Pulsar possible, but provides the platforms needed to support our users, and has been amazing at offering support whenever needed. + +[@mauricioszabo]: https://github.com/mauricioszabo +[@deedeeg]: https://github.com/DeeDeeG From f88802051a8a1dc0f89a048c9755571248ee36b6 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:19:48 -0700 Subject: [PATCH 02/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 11f11b325..0495ef203 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -14,7 +14,7 @@ How Pulsar's CI has recently changed. CI, or Continuous Integration, is a rather broad term used to describe the DevOps process of continuously (oftentimes on every change) building and testing a piece of software. In Pulsar's case this means two big things: -- Testing Pulsar and all of it's core packages +- Testing Pulsar and all of its core packages - Building Pulsar binaries, and even then running tests using those built binaries. To better understand how drastically things have changed, lets quickly take a look how Pulsar's CI has looked up until this month since nearly the beginning of the project. From acb4aa3d4b7d9f39d3ab01782d5965ba17841c80 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:19:59 -0700 Subject: [PATCH 03/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 0495ef203..c3b2d4653 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -15,7 +15,7 @@ How Pulsar's CI has recently changed. CI, or Continuous Integration, is a rather broad term used to describe the DevOps process of continuously (oftentimes on every change) building and testing a piece of software. In Pulsar's case this means two big things: - Testing Pulsar and all of its core packages -- Building Pulsar binaries, and even then running tests using those built binaries. +- Building Pulsar binaries and then running tests using those built binaries. To better understand how drastically things have changed, lets quickly take a look how Pulsar's CI has looked up until this month since nearly the beginning of the project. From 42d63cd14050e7357092b635fbbf4b026a675524 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:20:05 -0700 Subject: [PATCH 04/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index c3b2d4653..b48706d6f 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -17,7 +17,7 @@ CI, or Continuous Integration, is a rather broad term used to describe the DevOp - Testing Pulsar and all of its core packages - Building Pulsar binaries and then running tests using those built binaries. -To better understand how drastically things have changed, lets quickly take a look how Pulsar's CI has looked up until this month since nearly the beginning of the project. +To better understand how drastically things have changed, let's quickly take a look how Pulsar's CI has looked up until this month since nearly the beginning of the project. ## How it was From 445f20d86aa3ec1ccdc5223c75c84333aeb29627 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:20:10 -0700 Subject: [PATCH 05/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index b48706d6f..792ac8b69 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -23,7 +23,7 @@ To better understand how drastically things have changed, let's quickly take a l Whenever someone made a Pull Request to Pulsar, their code changes would be run through a gauntlet of processes: -- The entirety of the Pulsar codebase would be have it's tests run on GitHub Actions. +- The entirety of the Pulsar codebase would be have its tests run on GitHub Actions. - Every single core package (those that come with Pulsar) would also be tested via GitHub Actions. - A Pulsar binary was built for every single platform we support, this means Windows, Linux, macOS, Apple Silicon, and ARM Linux. From fe022ac711fa929a91a5bb3d40b06cce920d0d0a Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:20:22 -0700 Subject: [PATCH 06/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 792ac8b69..d464ce599 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -25,7 +25,7 @@ Whenever someone made a Pull Request to Pulsar, their code changes would be run - The entirety of the Pulsar codebase would be have its tests run on GitHub Actions. - Every single core package (those that come with Pulsar) would also be tested via GitHub Actions. -- A Pulsar binary was built for every single platform we support, this means Windows, Linux, macOS, Apple Silicon, and ARM Linux. +- A Pulsar binary was built for every single platform we support, this means Windows, Linux, macOS (Intel), macOS (Apple silicon), and ARM Linux. The big point of interest today is the process of building the Pulsar binaries. From ee85de73efe8d359eeb0ec4d0a2823f69614376c Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:20:36 -0700 Subject: [PATCH 07/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index d464ce599..793d4b2e0 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -31,7 +31,7 @@ The big point of interest today is the process of building the Pulsar binaries. On August 17, 2022 [@mauricioszabo] [introduced](https://github.com/pulsar-edit/pulsar/commit/64427f41782ae4a2ab72a81762dc8f2bcb3f2f7e) and created Pulsar's integration with [CirrusCI](https://cirrus-ci.com/). Which is an overall, fantastic CI platform, that at the time had a very generous free tier. So generous in fact that every single binary built for Pulsar, since we started the project, has been built within this free tier. -As those familiar with the project know, all of our funding comes from our fantastic community, via [OpenCollective](https://opencollective.com/pulsar-edit) and [GitHub Sponsors](https://github.com/sponsors/pulsar-edit), and we aim to be very careful about how we spend the money that is donated to us. At all times ensuring that the money is used in ways that can benefit the majority of our users, and that there is no better alternative for it's purpose. That's why when Cirrus [announced](https://cirrus-ci.org/blog/2023/07/17/limiting-free-usage-of-cirrus-ci/) that they were changing their free tier to something a bit more restrictive we had to scramble and find how we can continue our pace. +As those familiar with the project know, all of our funding comes from our fantastic community, via [OpenCollective](https://opencollective.com/pulsar-edit) and [GitHub Sponsors](https://github.com/sponsors/pulsar-edit), and we aim to be very careful about how we spend the money that is donated to us. At all times ensuring that the money is used in ways that can benefit the majority of our users, and that there is no better alternative for its purpose. That's why when Cirrus [announced](https://cirrus-ci.org/blog/2023/07/17/limiting-free-usage-of-cirrus-ci/) that they were changing their free tier to something a bit more restrictive we had to scramble to find a way to continue our pace. ## How it is, and how it got there From c2ce4746c478895187294537c8fd182f52c58a1d Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:20:47 -0700 Subject: [PATCH 08/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 793d4b2e0..916a8ede5 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -43,7 +43,7 @@ Keeping in mind that we trigger the same amount of runs per platform, the differ | Month | Windows Credits/Hours | Linux Credits/Hours | macOS Credits/Hours | | ----- | ---------------------- | ---------------------- | ----------------------- | -| May | 66 credits / 273 hours | 72credits / 396 hours | 490 credits / 544 hours | +| May | 66 credits / 273 hours | 72 credits / 396 hours | 490 credits / 544 hours | | July | 55 credits / 229 hours | 39 credits / 213 hours | 305 credits / 339 hours | Using this data, where we consider 1 credits = $1 USD, minus the novel 50 free credits, July would've costed $349 USD. We could then realistically estimate that building Pulsar binaries would cost ~$350 USD a month. From 1487f18753cc5a86ea17e098267f77ed80c782b4 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:21:08 -0700 Subject: [PATCH 09/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 916a8ede5..a6b06d5a0 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -46,7 +46,7 @@ Keeping in mind that we trigger the same amount of runs per platform, the differ | May | 66 credits / 273 hours | 72 credits / 396 hours | 490 credits / 544 hours | | July | 55 credits / 229 hours | 39 credits / 213 hours | 305 credits / 339 hours | -Using this data, where we consider 1 credits = $1 USD, minus the novel 50 free credits, July would've costed $349 USD. We could then realistically estimate that building Pulsar binaries would cost ~$350 USD a month. +Using this data, where we consider 1 credit = $1 USD, minus the novel 50 free credits, July would've cost $349 USD. We could then realistically estimate that building Pulsar binaries will cost ~$350 USD a month. Which when we consider that's a higher price than anything the Pulsar team spends any money on for Pulsar, it's a bit of a tough pill to swallow. But especially because Cirrus isn't the only service out there, no one on the team could justify spending our sponsors money on such a large expense. At this point, we had to determine a way to lower our usage or move off the platform. From 2f0679eda4c0646d74e261e6f119841513600e7a Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:21:17 -0700 Subject: [PATCH 10/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index a6b06d5a0..310a5aad5 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -48,7 +48,7 @@ Keeping in mind that we trigger the same amount of runs per platform, the differ Using this data, where we consider 1 credit = $1 USD, minus the novel 50 free credits, July would've cost $349 USD. We could then realistically estimate that building Pulsar binaries will cost ~$350 USD a month. -Which when we consider that's a higher price than anything the Pulsar team spends any money on for Pulsar, it's a bit of a tough pill to swallow. But especially because Cirrus isn't the only service out there, no one on the team could justify spending our sponsors money on such a large expense. At this point, we had to determine a way to lower our usage or move off the platform. +Which when we consider that's a higher price than anything the Pulsar team spends any money on for Pulsar, it's a bit of a tough pill to swallow. But especially because Cirrus isn't the only service out there, no one on the team could justify spending our sponsor's money on such a large expense. At this point, we had to determine a way to lower our usage or move off the platform. But to move off Cirrus, we had to consider everything it currently does for us: From ebbfbeb1b24e83099f548bdc5c55b174b889e099 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:21:22 -0700 Subject: [PATCH 11/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 310a5aad5..7809f2c5b 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -67,7 +67,7 @@ At this point, with the above knowledge, we had several different solutions to j But with all of these ideas, as a Do-ocracy, [attempts](https://github.com/pulsar-edit/pulsar/pull/682) began being made to switch as much as possible to GitHub Actions. -While this did solve a few of our needs from above, it didn't solve all of them, and introduced it's own issues. +While this did solve a few of our needs from above, it didn't solve all of them, and introduced its own issues. The biggest one, GitHub Actions doesn't support Apple Silicon or ARM Linux. Even though Apple Silicon support is on GitHub's [Roadmap](https://github.com/orgs/github/projects/4247), it has been pushed forward over and over since June 15th, 2022. So this support wasn't something we could rely on. From eaf3a2aa76e02fa5372f473aad15789125e4c8e1 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:21:31 -0700 Subject: [PATCH 12/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 7809f2c5b..beb21869b 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -69,7 +69,7 @@ But with all of these ideas, as a Do-ocracy, [attempts](https://github.com/pulsa While this did solve a few of our needs from above, it didn't solve all of them, and introduced its own issues. -The biggest one, GitHub Actions doesn't support Apple Silicon or ARM Linux. Even though Apple Silicon support is on GitHub's [Roadmap](https://github.com/orgs/github/projects/4247), it has been pushed forward over and over since June 15th, 2022. So this support wasn't something we could rely on. +The biggest one: GitHub Actions doesn't support Apple Silicon or ARM Linux. Even though Apple Silicon support is on GitHub's [Roadmap](https://github.com/orgs/github/projects/4247), it has been pushed forward over and over since June 15th, 2022. So this support wasn't something we could rely on. In finding a solution to our platform support issue, we looked at quite a few possibilities, at a point we were even considering purchasing an Apple Silicon Mac, second hand, and using GitHub Self Hosted Runners to build there. But of course the simplest answer, would be to only build Apple Silicon on Cirrus, but we had to consider what that would actually come out to. Looking at using all 50 free credits for building only Apple Silicon binaries, would mean getting up to 833.333 minutes within Cirrus, but we had to compare those minutes into what we could acheive: From 8e801896ccde8142a8a4fa06fe0f543c555086cf Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:21:44 -0700 Subject: [PATCH 13/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index beb21869b..d50551b46 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -122,7 +122,7 @@ With these exact numbers of our current trends, we could then assume we have an But even though we now knew what we needed to do, there was still a long list of things we had to change to get there, especially now considering our deadline to do so was only a few days away. -After a flurry of PR's and lots of testing, the team at Pulsar was able to accomplish all of the following in just under our 5 day limit: +After a flurry of PRs and lots of testing, the Pulsar team was able to accomplish all of the following in just under our 5 day limit: - Migrated all other platforms over to GitHub Actions - Ensure binaries are easily downloadable via GitHub Actions for testing purposes From c6058ba39f6ea2690f5319fc679b3eb167a3ed37 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:21:56 -0700 Subject: [PATCH 14/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md Co-authored-by: Daeraxa <58074586+Daeraxa@users.noreply.github.com> --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index d50551b46..8c7beae17 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -131,7 +131,7 @@ After a flurry of PRs and lots of testing, the Pulsar team was able to accomplis - Setup a brand new repository `pulsar-rolling-releases` to act as the CDN for every single rolling release - Nearly completely rewrite the `download` microservice to now use this new repository to retreive the newest rolling release -All of that work has culminated in a new CI plan for Pulsar, the one that is currently in effect starting September. On every single PR to the Pulsar repo, a binary will be built for Windows, Linux, and macOS. Once that PR is merged, a new rolling release will automatically be built, again just for these three platforms, which will then be publishing as a new release to the repository [`pulsar-rolling-releases`](https://github.com/pulsar-edit/pulsar-rolling-releases). Once on this repository the `download` microservice will be able to find and return these versions to any users attempting to download a rolling release of Pulsar. Then once every two days, Cirrus will be triggered to build binaries of Apple Silicon and ARM Linux. These new binaries will also be published to `pulsar-rolling-releases`. Then whenever we plan to do a new regular release of Pulsar, once a new tag is created for this release, Cirrus will automatically be triggered to build binaires for it's two platforms. Luckily for us, all of these changes mean we have not incurred any additional cost for the Pulsar project, even though there is some talk of officially supporting Cirrus on Open Collective at a price we can properly afford. +All of that work has culminated in a new CI plan for Pulsar, the one that is currently in effect starting September. On every single PR to the Pulsar repo, a binary will be built for Windows, Linux, and macOS. Once that PR is merged, a new rolling release will automatically be built, again just for these three platforms, which will then be publishing as a new release to the repository [pulsar-rolling-releases](https://github.com/pulsar-edit/pulsar-rolling-releases). Once on this repository the `download` microservice will be able to find and return these versions to any users attempting to download a rolling release of Pulsar. Then once every two days, Cirrus will be triggered to build binaries of Apple Silicon and ARM Linux. These new binaries will also be published to `pulsar-rolling-releases`. Then whenever we plan to do a new regular release of Pulsar, once a new tag is created for this release, Cirrus will automatically be triggered to build binaires for its two platforms. Luckily for us, all of these changes mean we have not incurred any additional cost for the Pulsar project, even though there is some talk of officially supporting Cirrus on Open Collective at a price we can properly afford. ## Summary From 46b33b15938e34d6df37bc3b2808dd24252001a2 Mon Sep 17 00:00:00 2001 From: confused_techie Date: Sun, 3 Sep 2023 21:31:06 -0700 Subject: [PATCH 15/15] Update docs/blog/20230903-confused-Techie-pulsars-ci.md --- docs/blog/20230903-confused-Techie-pulsars-ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/20230903-confused-Techie-pulsars-ci.md b/docs/blog/20230903-confused-Techie-pulsars-ci.md index 8c7beae17..ed17184ff 100644 --- a/docs/blog/20230903-confused-Techie-pulsars-ci.md +++ b/docs/blog/20230903-confused-Techie-pulsars-ci.md @@ -23,7 +23,7 @@ To better understand how drastically things have changed, let's quickly take a l Whenever someone made a Pull Request to Pulsar, their code changes would be run through a gauntlet of processes: -- The entirety of the Pulsar codebase would be have its tests run on GitHub Actions. +- The entirety of the Pulsar codebase would have its tests run on GitHub Actions. - Every single core package (those that come with Pulsar) would also be tested via GitHub Actions. - A Pulsar binary was built for every single platform we support, this means Windows, Linux, macOS (Intel), macOS (Apple silicon), and ARM Linux.