summaryrefslogtreecommitdiff
path: root/ci/README.md (follow)
Commit message (Expand)AuthorAgeFilesLines
* treewide: fix typosBen Siraphob2026-01-131-1/+1
* ci/github-script/merge: unify terms for authoring and creating PRs•••I didn't like r-ryantm "authoring"; so I changed that to "created" earlier. Arguably, using "opened" is more consistent with what is actually checked and can consistently be used for both. Wolfgang Walther2025-11-031-2/+2
* ci/github-script/merge: improve feedback for by-name check•••The by-name check would previously be green when the `pkgs/by-name/README.md` file was changed. This would still not mean the maintainer was able to merge the PR, because there'd be no maintainer for that file, but the feedback was not 100% accurate. Wolfgang Walther2025-11-031-1/+1
* workflows/bot: allow maintainer merges after committer approval•••This allows committers to approve PRs with additional, optional nits that the author-maintainer can either address or merge immediately without these changes. It also allows committers to approve a PR for merge, while still waiting for other maintainers to give their feedback - they can then merge the PR directly instead of passing it back to the committer. Wolfgang Walther2025-11-021-2/+3
* workflows/bot: allow maintainers to merge backports•••All other conditions equal, there is no reason to prevent maintainers from backporting changes to their packages. Maintainers are probably in the *best* position to tell whether a certain change is backportable or not - because they know the package well. Wolfgang Walther2025-11-021-2/+3
* ci/github-script/merge: support OR conditions•••This supports AND on the first and OR on the second level, which is needed for some follow up work like backports, approval based merges or trusted maintainers. Wolfgang Walther2025-11-021-1/+3
* ci/github-script/merge: improve wordingWolfgang Walther2025-11-021-1/+1
* ci/README: document nixpkgs-merge-bot•••Based on the README on the old nixpkgs-merge-bot repo[1], but updated to reflect the current reality. [1]: https://github.com/NixOS/nixpkgs-merge-bot Matt Sturgeon2025-11-011-0/+42
* ci/README: add github-script policy•••Over the last couple of months we have been migrating a lot of the old bash code to JavaScript, which is supported in GitHub Actions via `actions/github-script`. This change documents a "manual ratchet check" for this migration - new code should only be introduced as JavaScript and not as Bash. This will help us to eventually succeed with the migration and ensure quality and maintainability. We are migrating to JavaScript, because: 1. Using JavaScript is GitHub's [recommendation] against injection attacks. Using `actions/github-script` has first-class support for the event context and does not require to resort back to environment variables in most cases. When environment variables need to be used, these are accessed via `process.env`, without a risk for accidental injections. Using `actions/github-script` is also recommended in a recent [survey] of open source supply chain compromises: > Finally, since two out of three compromises were due to shell injection, > it might be safer to use a proper programming language, like JavaScript > with actions/github-script, or any other language accessing the context > via environment variables instead of YAML interpolation. 2. Handling even environment variables in Bash safely is almost impossible. For example arithmetic expressions cause arbitrary code execution vulnerabilities. While a lot of contributors are somehwat familiar writing Bash code for builders, writing *safe* Bash code for CI is a very different matter. Few people, if any, know how to do this. 3. GitHub Action's security model is quite unintuitive and even if some code runs with trusted inputs today, it may later be used in a more exposed context. Instead of making judgement calls about language choice case by case, a clear policy helps writing things defensively from the beginning. 4. We have developed a framework around our github-script based tools in `ci/github-script`. This provides a local `nix-shell` environment with the right dependencies and a local runner for these scripts for quick testing, debugging and development. No matter, whether you're developing a new feature, fixing bugs or reviewing a PR - this allows much quicker verification of the scripts, *without* running everything in a fork or test organization. 5. This framework also provides helpers for challenges that come up with GHA. One example is rate-limiting, where we have a helper script that will handle all rate-limiting needs for us, preventing us from running out of API calls and thus breaking CI entirely. We can only use these tools consistently, if we consistently use JavaScript code. 6. Using JavaScript allows us to handle JSON natively. Using `octokit/rest.js` provides first-class integration with GitHub's API. Together, this makes these scripts much more maintainable than resorting to `gh` and `jq`. [recommendation]: https://docs.github.com/en/actions/reference/security/secure-use#use-an-action-instead-of-an-inline-script [survey]: https://words.filippo.io/compromise-survey/ Wolfgang Walther2025-10-221-0/+8
* ci: remove python-updates from development branches•••The python-updates branch is not a "development" branch in the sense of ci/README.md's classification. That's because it allows force pushes. When rewrites are possible, cherry-picking from this branch should not be allowed, because the commit references will potentially end up out of sync. These kind of branches are now termed "Work-in-Progress" branches. Up until recently these branches didn't work well for Pull Requests targeting them, because Eval wouldn't run on them with a push event and thus, Eval in the PR couldn't succeed either. That's now fixed, PRs towards *any* WIP branch should work correctly. Wolfgang Walther2025-08-221-1/+1
* ci/README.md: one sentence per lineWolfgang Walther2025-06-291-4/+5
* 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-221-0/+29
* ci/pinned: manage nixpkgs and treefmt-nix with npins•••Instead of rolling our own update script which only works for a single pin, let's use npins. We can then use it for the treefmtNix pin as well, which was mostly unmaintained, so far. Wolfgang Walther2025-06-021-2/+2
* ci/nixpkgs-vet: remove left-over pin•••We're now consuming nixpkgs-vet from the pinned-nixpkgs, but apparently forgot to remove all of this. Wolfgang Walther2025-06-021-20/+0
* workflows/get-merge-commit: inline get-merge-commit.sh script as github-script•••The reason this was a separate shell script was, that this would be included in multiple workflows separately. But a while ago this had been changed to a re-usable workflow, so we can just as well inline the script. This also allows us to use actions/github-script, which makes for a much more readable script than the bash script before. Wolfgang Walther2025-05-231-43/+0
* workflows/get-merge-commit: return targetSha•••We can fetch the targetSha directly with the mergedSha from the API. This avoids a checkout with fetch-depth: 2 for a small performance improvement. Wolfgang Walther2025-05-111-2/+2
* workflows: update Ubuntu runner to ubuntu-24.04•••Link: https://github.com/actions/runner-images/issues/10636 NAHO2025-01-051-1/+1
* workflows: lock Ubuntu runner to ubuntu-22.04•••Lock the Ubuntu runner to ubuntu-22.04 to avoid accidental updates [1] and increase reproducibility. [1]: https://github.com/actions/runner-images/issues/10636 NAHO2025-01-051-1/+1
* ci: init get-merge-commit workflow•••Signed-off-by: John Titor <50095635+JohnRTitor@users.noreply.github.com> John Titor2024-12-051-21/+8
* ci/get-merge-commit.sh: Add documentation•••And distinguish exit codes Silvan Mosberger2024-10-121-0/+55
* treewide: Fix or remove some markdown links•••Found using https://github.com/serokell/xrefcheck, which unfortunately can't trivially be enforced in CI because we also have the manual markdown files that need post-processing to be valid Silvan Mosberger2024-09-031-1/+1
* nixpkgs-vet: update CI, docs, and release to 0.1.4•••Everything gets moved into the `ci/` top-level directory. We keep behind `maintainers/scripts/check-by-name.sh` and `pkgs/test/check-by-name/pinned-version.txt` as they are going to cause CI errors and confusion until we get all the way through the various channels. They'll be removed in about a week or so. Philip Taron2024-09-031-0/+31
* ci: reusable Nix format Nixpkgs pin•••This is needed such that in the next commit, we can re-use the same version from a shell.nix, allowing people to have a guaranteed matching nixfmt version. Silvan Mosberger2024-06-261-0/+8
* ci: init directory•••This creates a new directory for all CI support files, will be populated in future commits. Silvan Mosberger2024-06-261-0/+4