summaryrefslogtreecommitdiff
path: root/.github/workflows (follow)
Commit message (Expand)AuthorAgeFilesLines
* workflows/eval: disable swap•••Recent performance tests show that (a) swapping heavily slows down the Eval job, while (b) lowering the chunkSize does not have an effect on run-time. It does on memory usage, though - thus we can get rid of swapping entirely by reducing chunkSize respectively. Wolfgang Walther2025-08-061-6/+5
* workflows/build: build nixpkgs tarball•••This adds a build job for the tarball, which might help uncover eval issues on attributes not normally touched by Eval, aka those added in `pkgs/top-level/packages-config.nix`. Wolfgang Walther2025-07-241-2/+6
* ci/github-script/commits: block on errors•••Most of the checks we do for cherry-picks are dismissable warnings, with one exception: When a commit hash has been found, but this hash is not available in any of the pickable branches, we raise this with severity=error. This should also *block* the merge and not be dismissable. That's because this is a fixable issue in every case. Wolfgang Walther2025-07-161-77/+1
* ci/github-script/commits: init from ci/check-cherry-picks•••This turns the check-cherry-pick script into a github-script based JavaScript program. This makes it much easier to extend to check reverts or merge commits later on. Wolfgang Walther2025-07-161-27/+10
* ci/github-script: default to commonjs•••Since all github-scripts need to be written in commonjs, we now default to it by not setting package.json. Support from editors for .js files is slightly better than .cjs. To still allow using module imports in the test runner script, we trick node into loading the script itself as a module again via `--import ./run`. Wolfgang Walther2025-07-141-1/+1
* ci/github-script: move from ci/labels•••This just moves things around to use less specific naming - `labels` is only *one* script that can potentially be run locally while still being written in github-script. Later, we can add more. Wolfgang Walther2025-07-141-2/+2
* workflows/backport: fix concurrent jobs cancelling each other•••When a PR is merged and labeled afterwards - with a non-backport label - the following will happen: - The first backport job is triggered on the merge. - The second backport job is triggered on the label event. - The second job will cancel the first one due to the concurrency group. - The second job will cancel itself because the label event didn't contain a backport label. Both jobs end up cancelled and no backport happens. We made the backport action idempotent upstream a while ago, so we don't need to cancel those actions. Instead, we'll run all of them - subsequent actions running through will just stay silent anyway. Wolfgang Walther2025-07-121-4/+0
* workflows/build: be clearer about what is being built•••Committers could get the false impression from, e.g., `PR / Build / aarch64-linux` that this workflow builds the packages changed in the current PR. Such a misunderstanding could pair poorly with the "enable auto-merge" button, once that's enabled. Michael Daniels2025-07-111-1/+5
* ci/labels: run in dry mode locally•••To avoid mistakes when developing and testing against the upstream repo. Wolfgang Walther2025-07-081-0/+1
* ci/labels: init from workflows/labels•••Moves the labels job into a separate ci/ subfolder to run it locally. This eases debugging *a lot*. Wolfgang Walther2025-07-081-399/+9
* workflows/labels: small refactor•••To avoid having a diff when moving the file in the next commit. Wolfgang Walther2025-07-071-1/+1
* workflows/labels: manage "needs: reviewer" label•••This label allows finding pull requests which have no reviewer requested, yet. Wolfgang Walther2025-07-041-6/+25
* workflows/labels: paginate with cursor•••Pagination via cursor is required above 10k items. To do so, we store the current cursor as an artifact and read it back in in the next scheduled run. Wolfgang Walther2025-07-031-32/+59
* Reapply "workflows/labels: label stale issues"•••This reverts commit c18e94361ef21171c48522142adfbb1081be90bf. Wolfgang Walther2025-07-021-141/+153
* Revert "workflows/labels: label stale issues"Wolfgang Walther2025-07-011-153/+141
* workflows/labels: label stale issues (#419878)Wolfgang Walther2025-07-011-141/+153
|\
| * workflows/labels: label stale issues•••By re-organizing the flow in `handle()` we can start labeling both issues and pull requests, and only make the relevant API requests for the PR-case. At first glance, we might think that we only need to label the big batch list of issues and not those recently updated: But that's wrong, for recently updated issues it's important to label quickly, because the stale label needs to be *removed*, too. Wolfgang Walther2025-06-271-141/+153
* | workflows/periodic-merge: remove 24.11•••24.11 is deprecated now. Leona Maroni2025-07-011-4/+0
* | .github/workflows/README.md: one sentence per lineWolfgang Walther2025-06-291-13/+34
|/
* workflows/labels: retry on transient API failures•••Currently, the labels job fails a few times each day with network failures. Retrying the requests should help. Wolfgang Walther2025-06-271-0/+1
* workflows/labels: label rebuilds on failed PR workflow•••We already tried to fix this case earlier, but didn't account for all cases: A scheduled workflow can also encounter a pull request with failed PR workflow. This failure doesn't need to be in the Eval part, so artifacts could *still* be available. To make sure PRs always get rebuild labels, just ignore the status condition. Either the artifact is there, or it is not. Wolfgang Walther2025-06-271-2/+0
* workflows/labels: slightly improve loggingWolfgang Walther2025-06-271-0/+1
* workflows/labels: fix processing the 100 oldest PRs•••The `page` number is 1-based, but the remainder might very well be 0. This lead to not looking at the 100 oldest PRs, ever. Wolfgang Walther2025-06-271-1/+1
* workflows/backport: korthout/backport-action: 3.2.0 -> 3.2.1•••Release Notes: https://github.com/korthout/backport-action/releases/tag/v3.2.1 This should many of the annoying, duplicated error messages that the backport action comments. Wolfgang Walther2025-06-261-1/+1
* workflows/labels: fix merge conflict label•••The previous implementation had two problems: - When switching from /search to /pulls, we disabled the additional GET on each single pull request - which causes no test merge commit creation for all PRs. This means, merge conflicts will not actually be detected. - By using `item` in the pull-request triggered case, this goes back to `context.payload.pull_request`, which is the state *at the beginning* of the workflow run. But this renders our "let's wait 3 minutes before checking merge_commit_sha" logic void. While we wait for 3 minutes, we still use the *old* value afterwards... Just making the extra request every time simplifies the logic and solves both problems. Wolfgang Walther2025-06-251-5/+2
* workflows/labels: fix stale label date sorting•••With the help of: https://stackabuse.com/how-to-sort-an-array-by-date-in-javascript/ Wolfgang Walther2025-06-251-2/+2
* Reapply "workflows/labels: manage stale & merge conflict labels" (#419654)Wolfgang Walther2025-06-251-147/+248
|\
| * workflows/labels: use /pulls endpoint instead of search for "all" pull requests•••It's necessary to use a combination of different endpoints here, because the /search endpoint only allows fetching the first 1000 items and will fail with a higher page number (11+). On the flip side, the /pulls endpoint doesn't allow counting the total number of results, so we can't calculate the required page number with its response. Putting both together should work, though. Wolfgang Walther2025-06-251-12/+15
| * workflows/labels: improve cleanup of reservoir timer•••This should make sure that the timer is cleaned up, no matter what. This didn't seem to be the case before, where it would still be stuck sometimes, when throwing an error somewhere. Wolfgang Walther2025-06-251-61/+63
| * workflows/labels: handle PR-creation-edge-case for merge conflict label•••Explained very well by the code comment. Wolfgang Walther2025-06-251-1/+8
| * workflows/labels: fix running in pull_request context•••When running in a pull_request context, the labels job is part of the currently running workflow - which will never have succeeded, yet. Apparently it could be failed already, so in this case we take *any* workflow run, no matter its state. Wolfgang Walther2025-06-241-1/+2
| * workflows/labels: fix stale label•••To set the stale label properly, we need to consider the right timeline events only - and their respective relevant timestamps. Wolfgang Walther2025-06-241-4/+25
| * Reapply "workflows/labels: manage stale & merge conflict labels"•••This reverts commit c366efa6e2816c2cb48b3018fe00ceb8ca6cbc81. Wolfgang Walther2025-06-241-144/+211
* | workflows: nix: 2.29.0 -> 2.29.1Wolfgang Walther2025-06-245-10/+10
|/
* Revert "workflows/labels: manage stale & merge conflict labels"Wolfgang Walther2025-06-241-211/+144
* workflows/labels: manage merge-conflict label for pull requests•••The code comments describe much better what we do then a commit message could ever do. Wolfgang Walther2025-06-241-0/+14
* workflows/labels: manage stale label for pull requests•••This manages the `2. status: stale` label for pull requests only (not issues, yet) with the following conditions: - The last event on the timeline of the Pull Request counts. - Labeling and unlabeling of any kind are ignored. - Older than 180 days are stale. - Security labeled PRs are never stale. To handle this label correctly, it's important to go through all pull requests. Any approach to limit the list of PRs via search are not going to work: - Filtering by `updated` is not going to work, because it includes the last time that *a label was set* on the PR. To actually find out whether a PR is stale or not, the timeline of events needs to be looked at. - Filtering by an existing stale label is not going to work either, because such a label might have been added manually and thus breaking the rules we set up here. Thus any existing label needs to be confirmed as well. Wolfgang Walther2025-06-241-0/+17
* workflows/labels: handle missing eval results gracefully•••We keep working through the PR, even though we don't have any eval results. This will allow actually managing labels for much older PRs as well. Most importantly, it will allow merge-conflict and stale-labeling next. Wolfgang Walther2025-06-241-33/+43
* workflows/labels: run on every PR eventually•••This replaces the manual dispatch trigger with a batched run through all pull requests every day. This has the small benefit of not having to worry about backfilling labeling after fixing bugs - and the much bigger one in being able to handle merge-conflict and stale labels properly later. For those, it's inevitable to eventually scan through all PRs. At this stage, the vast majority of PRs will still be skipped, because there won't be an eval run with artifact available. This will be improved in the next step. Technically, the workflow_dispatch trigger is kept to allow easily testing this in forks, where the scheduled jobs are disabled. The triggered job will behave similar to the scheduled job, though, and have no special inputs. Wolfgang Walther2025-06-241-33/+52
* workflows/labels: refactor to search instead of listing PRs•••This doesn't provide much value in itself, yet, but is much more flexible in the next step, when also looking at much older PRs. Wolfgang Walther2025-06-241-21/+38
* workflows/labels: save an API request when running in pull_request context•••We previously ran another list request in this case, but don't need to anymore - we already have the `pull_request` context available. Wolfgang Walther2025-06-241-49/+37
* workflows/labels: refactor moving cutoff downwardsWolfgang Walther2025-06-241-26/+26
* workflows/labels: refactor into handle() function•••Separate commit for better diff. Wolfgang Walther2025-06-241-117/+119
* workflows/labels: dynamically adjust reservoir to remaining rate limit•••Instead of approximating how many requests we can still make and hoping the best that concurrent jobs won't break the bank, we can just work with the actual limits. By updating regularly, we make sure that concurrent jobs are taken into account. We always keep a reserve of 1000 requests to make sure *any* non-labeling jobs using this app will always succeed. This will allow us to easily backfill labels across multiple days, especially taking the increased rate limit for the app into account. With this, we should get up to 11.5k requests per hour in. Wolfgang Walther2025-06-241-5/+29
* workflows/labels: run with app token•••This gives us a much higher rate limit of 12.5k requests per hour. If the app is not available, we fallback to the regular `github.token`. This can happen when testing in forks without setting up an app. Wolfgang Walther2025-06-232-6/+23
* workflows/{check,reviewers}: don't run on staging-like PRs (#418496)Wolfgang Walther2025-06-234-27/+55
|\
| * workflows/{check,reviewers}: don't run on PRs from secondary development bran...•••It makes no sense to check cherry picks or request reviewers on PRs from staging-next to master, the same on backbranches or for haskell-updates into staging. Wolfgang Walther2025-06-222-2/+8
| * workflows/pr: refactor base/head branch decision making•••Some jobs purposefully only run on certain base or head branches. By centralizing the logic, parts of it can easily be re-used later. Also, this gives them an explicit name and thus makes them easier to understand. Wolfgang Walther2025-06-224-26/+48
* | workflows: log rate limits consistently•••This will give us a better idea about: - Which jobs use the most API calls and can possibly be made more efficient. - Which rate limits apply exactly to which tokens. Wolfgang Walther2025-06-226-0/+95
* | workflows/labels: manage "first-time contribution" label•••This is currently managed with yet another bot, but we don't need to - this fits into our workflow nicely. Wolfgang Walther2025-06-221-0/+2