A hosted runner cannot reach the private network, so a deploy job needs a runner inside it — and a long-lived runner inside the network accumulates everything every…
Downloading eighty packages on every push is thirty seconds of every build, and the fix is a cache keyed on the thing that determines the contents. Caching the…
A monorepo pipeline that runs every job on every push spends most of its minutes proving that unchanged code still works. The required-check interaction is the part that…
Five workflows repeating the same eight setup steps is five places to update, and reusable workflows do not exist yet — a composite action is what does. shell:…
uses: some/action@v2 resolves a tag, and a tag is a mutable pointer — so the code running in your pipeline can change without anything in your repository changing.…
A workflow triggered by pull_request from a fork has no secrets, deliberately. pull_request_target runs in the context of the base repository and does have them. Combining pull_request_target with…