Files
actions/README.md
T
cierzniak e8cc842238 feat: add pnpm-install as a shared composite action
Lifts ptpa_pl's local .gitea/actions/pnpm-install into this repo, parametrised
enough for repositories we have not met yet: working-directory, install args,
pnpm version and an opt-in store cache.

Cache is off by default. ADR-0014 pins actions/cache to major 3 and no workflow
on this instance has exercised the cache server yet - a shared action that a
dozen jobs hang off is the wrong place to premiere that dependency.

Two traps found while testing against ptpa_pl's lockfile in node:24-bookworm-slim,
both avoided by pinning the store instead of reading `pnpm store path`:
that command defaults to <workspace>/.pnpm-store, inside the working tree where a
committing job could sweep it up, and it exits 0 while printing its error to
stdout, which would have fed actions/cache a garbage path silently.

The version input also carries COREPACK_ENABLE_PROJECT_SPEC=0, without which a
packageManager field outranks `corepack prepare --activate` and the input would
do nothing at all - no effect, no error.
2026-08-10 23:32:51 +02:00

72 lines
2.9 KiB
Markdown

# gitea-runner/actions
Współdzielone composite actions do jobów Gitea Actions na `git.cierzniak.it`.
Jedna akcja = jeden podkatalog. Repo może zostać prywatne — runner uwierzytelnia się
przy pobieraniu akcji, patrz „Dostęp" niżej.
## Akcje
| Akcja | Do czego |
| --- | --- |
| [`pnpm-install`](pnpm-install/) | corepack + `pnpm install` z lockfile'a, opcjonalny cache store'a |
| [`resolve-buildx-cache`](resolve-buildx-cache/) | `DOCKER_CACHE_*` z runnera → `driver-opts` i refy cache'a dla buildx |
## Jak używać
Pełny URL w `uses:` i **tag**, nigdy `@main`:
```yaml
- name: Resolve buildx cache settings
id: cache
uses: https://git.cierzniak.it/gitea-runner/actions/resolve-buildx-cache@v1
with:
cache-image: ${{ github.repository }}/app
```
Pełny URL jest konieczny, bo `DEFAULT_ACTIONS_URL` tej instancji wskazuje na GitHuba —
`uses: gitea-runner/actions/...@v1` poleciałoby tam i padło. Przestawianie tego ustawienia
na `self` jest odradzane przez dokumentację Gitei, bo wymusiłoby mirrorowanie lokalnie także
`actions/checkout` i całej reszty.
Tag zamiast gałęzi, ponieważ jedno repo obsługuje wiele pipeline'ów: push do `main`
przy `@main` zmieniłby je wszystkie naraz.
## Dostęp
Organizacja `gitea-runner` jest `limited`, więc anonimowy `git clone` tego repo nie działa.
To **nie** jest przeszkoda: `act_runner` pobiera akcje z tokenem
(`GoGitActionCache.Fetch` → `http.BasicAuth{Username: "token", Password: token}`).
Żeby ten token był autoryzowany, każde repo-konsument musi mieć tu nadany dostęp:
> **Settings → Actions → General → collaborative owners** — dodaj *właściciela*
> (organizację albo użytkownika), nie pojedyncze repo.
Bez tego job pada przy rozwiązywaniu `uses:`, jeszcze przed pierwszym krokiem akcji.
Ustawienia nie ma w REST API — trzeba wyklikać.
Aktualnie nadane: `cierzniak-it`.
Do nadania przy najbliższej migracji: **`ptpa`** (`website`) — pierwszy konsument
`pnpm-install`, dziś bez dostępu.
Kandydaci do dodania, gdy akcja pojedzie szerzej (repo z buildxem w CI):
`leczenieran` (`wizytowka`, `elektroniczna-dokumentacja-medyczna`),
`welding-technology-review` (`witryna-internetowa`), `ekoinbud` (`production-system`).
## Wersjonowanie
`vN` to **ruchomy** tag majora — poprawki i wstecznie zgodne zmiany przesuwają go na nowy
commit, konsumenci nie ruszają swoich workflow. Zmiana łamiąca kontrakt (usunięty input,
zmieniona semantyka outputu) dostaje `vN+1`, a stary tag zostaje tam, gdzie stał.
Po przesunięciu tagu: `git tag -f vN && git push -f origin vN`. Runner rozwiązuje ref przy
każdym jobie, więc konsumenci łapią zmianę bez żadnej akcji po swojej stronie — to samo
zdanie czyta się też jako ostrzeżenie o zasięgu rażenia.
## Powiązane repo
- [`gitea-runner/images`](https://git.cierzniak.it/gitea-runner/images) — obrazy bazowe
jobów, ADR-y i przykłady workflow.