Hacker News new | past | comments | ask | show | jobs | submit login
Supercharging GitHub Actions with Job Summaries (github.blog)
139 points by judge2020 on May 16, 2022 | hide | past | favorite | 41 comments



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.


FWIW "Failed"/"Passed" vs "Fail"/"Pass" is aggregates vs individual result, so I'd give them a pass (heh) on that one.


This is definitely a nice feature. I had previously tried creating workflow jobs that had emojis in their name, but that wasn't supported.


"Supercharging" is such an exhausting buzzword these days...


Agreed, more like "Should have been there since day 1 and we know we still don't have a decent deploy dashboard"


I feel similarly about “powered by.”


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.


This is seriously bizarre.

Arguably the world's leading CI/CD tool doesn't support iOS builds on M1.

But yet they can deliver 100+ far less fundamental features: https://github.blog/changelog/


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.


People use mac m1s as servers?


Mostly the Mac Mini to run CI workflows or build iOS and macOS applications.


Macs are the only way to build iOS apps. And the M1 macs are several times faster at this task than the old ones.


I love the design of this!

    echo '### Hello world! :rocket:' >> $GITHUB_STEP_SUMMARY
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.


Small clarification, because I had the same misconception: $GITHUB_STEP_SUMMARY is just an env var containing the name of a file


Yeah https://docs.github.com/en/actions/using-workflows/workflow-... has some more details on this - it even suggests that if you want to delete the summary entirely you can do:

    rm $GITHUB_STEP_SUMMARY


Thanks, it was fuzzy at first to me as well.

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.

https://docs.github.com/en/actions/learn-github-actions/envi...


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.


I can't help but feel like GitHub is like 5 years behind GitLab.


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.


Is this feature available in Gitlab CI? I'd love to use it if it is...


How can you tell ? Their product page is the worst:

https://about.gitlab.com/stages-devops-lifecycle/

None of those sections seems to correlate to actually building code.


That is their sales page. Have you looked in the actual docs yet?


GitLab team member here.

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.

https://docs.github.com/en/actions/managing-workflow-runs/re...


They also put generic DRY features like 'internal' repos behind their most expensive paywall. Thanks M$.


Looking at the pricing page I see "unlimited public/private repositories" in their free "plan".

Could you explain what type of internal repos you are talking about?


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.


I suspect parent is asking you to explain how this is different than a "private" repository.


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.


Ah ok. So "private component re-use" for CI is not possible with a free account, even though such an account _does_ allow private repos. Thanks.


Do you feel you’re entitled to those features for free? You can always run your own GitLab.


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.


GitHub is encouraging bad coding practices in the name of money,

At alternative way of looking at that is that your company isn't willing to pay for the tools you need to do your job properly.


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.


A 5 person startup doesn't really need internal repos either though. At that size a private repo works fine.


If you knew what the startup was, that might be good advice.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: