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 corepack + pnpm install z lockfile'a, opcjonalny cache store'a
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:

      - 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

S
Description
No description provided
Readme
46 KiB