Nit: love the usage of emojis for quickly conveying information, but do use them consistently. In this example they’re using both a ‘red x’ and a ‘red dot’ for failures. Similarly, they use both tenses “Failed” and “Fail”, “Passed” and “Pass”. Pick one and stick with it.
I am surprised to see that GitHub staff are still working on GitHub Actions. It's hard to tell because it's been almost two years and it's still not possible to have a self-hosted GitHub Actions runner on Mac M1: https://github.com/actions/runner/issues/805, even though the community has made PRs for it.
Self-hosted runners at scale are a nightmare. Random failures all around, exit code is whatever it wants to be... you'd think with the runner code in the open all that could be fixed, but no, it's a very confusingly written MS C# codebase that has clearly grown over the years as TFS Pipelines. Even the GitHub developers get confused when they tried to implement ephemeral runners and then figured out the scheduler just pipelines new jobs to runners and drops them permanently (shows as "waiting for runner for 15-20 minutes, then cancelled to the user) if you kill the runner anyway. And the worst: The component failing most often is the scheduler, and that runs at GitHub. It feels like it was written by an intern. It doesn't even do FIFO. Old jobs generally wait _longer_. We also have stuck jobs all the time because the scheduler lost it. GitHub Premium Enterprise Support just keeps saying to contact them whenever it happens and they're "working on it". My team has been working on making this entire crap work for almost an entire year on and off, and things only got marginally better. To the point we'll be using the new hosted runners with fixed egress IP and custom sizes instead.
Good job, you filled a hole in your spec sheet with literal shit and then sold us the only alternative a year later when it is unfeasible to migrate away again ("but we have a large Microsoft contract" politics keep us from doing that anyway, but that aside).
GitHub Actions are extremely actively developed and from what I can tell quite strategic. However, the action team's acceptance for outside contributions across all their projects (runner, toolkit, actions) seems surprisingly low for a company that runs a "social" coding service.
You can do it by running your terminal in compatibility mode. I’ve been running our iOS CI pipeline on an M1 for almost a year flawlessly at this point and it’s blazing fast.
Having this as an environment variable you can write to that is really clever, and makes it easy to generate these from other scripts (or Python commands etc) too.
The official description of $GITHUB_STEP_SUMMARY reveals a bit of the implementation details:
> The path on the runner to the file that contains job summaries from workflow commands. This file is unique to the current step and changes for each step in a job. For example, /home/rob/runner/_layout/_work/_temp/_runner_file_commands/step_summary_1cb22d7f-5663-41a8-9ffc-13472605c76c.
Very clever to use markdown for this: makes it easy to implement on both sides. I would've probably done some kind of custom table DSL which would've been way worse.
This is great, I've been wanting unit test results to be outputted like this for ages. Same for IaC setups, to have the URL to a newly created environment easily clickable, etc.
Agreed, while Github Actions seems more modern at first glace (mostly because of the marketplace listing of public Actions), it's got a lot of rough edges, after thought features, unreliable behaviour (such as flaky build console output) and limited supported off-the-shelf auto-scaling self-hosted runners implementation.
99% of feature requests / bugs I've Github support result in a "Check the Roadmap, it might be on there" - you check the roadmap - it's been there for years with no progress. New features/offerings seem to get prioritised over stability and core functionality.
In GitLab, the best way to view a summary of your jobs is the pipeline details page. This page provides a clear overview of each job including status and allows for jobs to be grouped by both stage and dependencies for easier review.
On the whole I think the GitHub Actions experience is really nice, but there are some baffling decisions for sure, like requiring GitHub Enterprise just to put a manual approval step in a workflow.
I’m not sure that last part is true. I definitely use a workflow on an OSS repo that includes a manual approval step. (A team has to approve it before the rest of the workflow completes)
> Environments, environment protection rules, and environment secrets are available in *public* repositories for all products. For access to environments in *private* repositories, you must use GitHub Enterprise.
Internal repositories, for example, make it easier to have one set of Git Actions that is available to any Git Actions runner in your Org. What this means in practical terms, is cleaner code that is less repetitive. It's a total cop-out for GH to act like this is a feature worth paying for enterprise. It's not just useful to enterprise users, it's useful to everyone, including free users.
TL;DR: GH encourages bad coding practices unless you pay them enough. It's not consumer friendly and they can barely keep Actions running consistently enough to justify a paywall for such a staple feature.
Private repositories can only be used by the Git Actions runner for that repository. For a monorepo, this works fine. If you have any semblance of microservices in their own repos, orchestrating CI/CD and other build/artifact processes is a nightmare. Internal repositories allow the Git Actions runner access from any other private repository, meaning you can have one repository for all of your git actions that can be neatly called from any other repository (private or public) in the org.
I feel that our organization paying for five heads at the mid-tier enterprise level entitles us to such a basic feature. I actually _do_ think this feature should be available to all users, even free.
GitHub is encouraging bad coding practices in the name of money, I'm sorry you can't see it for what it is.
A 5 person startup doesn't need a dedicated GH enterprise account manager and the bill that comes with that. It's lazy market segmentation, and you know it is.