Sekrety w GitHub Actions z Crunu i OIDC
Uruchamiaj kroki GitHub Actions ze zmiennymi ze środowiska Crunu. Token usługowy dostaje tylko to, co przyznasz, a OIDC wiąże go z repozytorium i gałęzią.
- Obsługa
- Działa z Crunu już dziś: obsługa GitHub Actions jest częścią produktu.
- Funkcje Crunu
- CI/CD i Maszyny
- Sprawdzono
- Z wersją Crunu 6.0.0, 27 października 2026
Funkcje Crunu, które działają z GitHub Actions
Każda z poniższych funkcji działa tak samo w każdej integracji: serwer przechowuje zaszyfrowane dane, a odszyfrować je mogą tylko osoby, maszyny i tokeny, którym dasz dostęp.
CI/CD
Daj każdemu potokowi token usługowy ograniczony do jego środowisk i powiąż go z dostawcą CI przez OIDC, żeby wyciekły token nie mógł sam się zalogować.
Dowiedz się więcej
Maszyny
Zarejestruj serwer jednorazowym kodem, a agent crunu trzyma jego środowiska w pamięci i uruchamia z nimi twoje programy.
Dowiedz się więcej
Jak to działa z GitHub Actions
Na tej stronie
Co Crunu robi w GitHub Actions
Krok workflow uruchamia twoje polecenie przez crunu run. Agent crunu loguje się tokenem usługowym, sprawdza podpisy wszystkiego, co wysyła serwer, odszyfrowuje zmienne we własnej pamięci i uruchamia z nimi polecenie. Nic nie jest zapisywane na dysku.
crunu run --env web-app/staging -- npm testToken dostaje tylko środowiska, do których dasz mu dostęp. Z powiązaniem CI (OIDC) potrzebuje też świeżego tokenu GitHuba dla repozytorium, gałęzi i środowiska wdrożenia, które ustawisz, więc wyciekły CRUNU_TOKEN nie zaloguje się sam. crunu sam prosi o ten token GitHuba, a serwer odrzuca token, który był już użyty.
Konfiguracja
- W Crunu otwórz Service tokens i wybierz New service token. Nadaj mu nazwę, na przykład
github-actions-web-app, przyznajweb-app / stagingi zostaw domyślną dzierżawę 30 dni. Token przestaje działać, jeśli żadne uruchomienie nie użyje go dłużej niż przez czas dzierżawy, a każde uruchomienie ją przedłuża. - Token jest pokazywany tylko raz. Od razu zapisz go jako sekret repozytorium
CRUNU_TOKEN. - Skopiuj wartości z bloku CI setup na stronie tokenu do zmiennych repozytorium:
CRUNU_SERVER,CRUNU_VERSION,CRUNU_INSTALL_URL,CRUNU_INSTALL_SHA256iCRUNU_BINARY_SHA256. Pochodzą z podpisanego manifestu wydania. W chmurzeCRUNU_SERVERtohttps://app.crunu.com. - Opcjonalnie dodaj powiązanie CI (OIDC) na stronie tokenu. Wybierz dostawcę GitHub i ustaw
repository,reforaz, dla tokenu production,environment.
Przykładowy workflow
To zadanie instaluje przypiętą wersję crunu, sprawdza SHA-256 instalatora przed jego uruchomieniem i uruchamia testy ze zmiennymi staging.
jobs:
test:
runs-on: ubuntu-latest
permissions:
id-token: write # only if the token has a CI binding (OIDC)
contents: read
steps:
- uses: actions/checkout@v4
- name: Install crunu
run: |
curl -sSf "${{ vars.CRUNU_INSTALL_URL }}" -o /tmp/crunu-install.sh
echo "${{ vars.CRUNU_INSTALL_SHA256 }} /tmp/crunu-install.sh" | sha256sum -c -
sh /tmp/crunu-install.sh --version "${{ vars.CRUNU_VERSION }}" --sha256 "${{ vars.CRUNU_BINARY_SHA256 }}" --user-install
- name: Tests
env:
CRUNU_TOKEN: ${{ secrets.CRUNU_TOKEN }}
CRUNU_SERVER: ${{ vars.CRUNU_SERVER }}
run: exec crunu run --env web-app/staging -- npm testDla tokenu production powiązanie CI (OIDC) może wymagać:
repository:kiteline/web-appref:refs/heads/mainenvironment:production
Audience to adres twojego serwera Crunu. crunu prosi GitHub o token z tym audience, dlatego zadanie potrzebuje id-token: write.
Akcja setup-crunu
Te same kroki instalacji są też dostępne jako mała akcja złożona, setup-crunu. Nie jest opublikowana w GitHub Marketplace. Trzymaj kopię jej dwóch plików w .github/actions/setup-crunu/ swojego repozytorium, żeby kod, który dotyka sekretów potoku, przechodził ten sam przegląd co reszta twojego kodu. Jeśli zamiast tego publikujesz ją jako osobne repozytorium, przypnij ją do pełnego SHA commita, a nie do tagu.
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-crunu
with:
version: ${{ vars.CRUNU_VERSION }}
install-url: ${{ vars.CRUNU_INSTALL_URL }}
install-sha256: ${{ vars.CRUNU_INSTALL_SHA256 }}
sha256: ${{ vars.CRUNU_BINARY_SHA256 }}
- env:
CRUNU_TOKEN: ${{ secrets.CRUNU_TOKEN }}
CRUNU_SERVER: ${{ vars.CRUNU_SERVER }}
run: exec crunu run --env web-app/staging -- npm testAkcja nie łączy się z serwerem Crunu. Tylko instaluje crunu i dodaje go do PATH dla kolejnych kroków.
Token poza zasięgiem
- Ustaw
CRUNU_TOKENwenvtylko tego jednego kroku, który uruchamiacrunu. Zmienne na poziomie zadania i workflow trafiają do każdego kroku. - Uruchamiaj
crunuprzezexec. Powłoka kroku zostaje wtedy zastąpiona przezcrunu, a token nie zostaje w procesie, który twoje polecenie mogłoby odczytać. - Polecenie uruchomione przez
crunu runnigdy nie dostaje własnych danych logowaniacrunu, takich jakCRUNU_TOKENczyCRUNU_OIDC_TOKEN.
Runnery i sumy kontrolne
crunu działa na runnerach z Linuksem i macOS, na amd64 i arm64, także na runnerach własnych (self-hosted). Runnery z Windows nie są obsługiwane. Suma kontrolna w bloku CI setup dotyczy Linuksa na amd64. Dla runnerów arm64 lub macOS ustaw sumy kontrolne dla poszczególnych platform z pliku manifest.json wydania, na przykład amd64=… i darwin-arm64=….
Production bez CI
Konfiguracja zalecana przez Crunu trzyma wartości production poza potokiem. Serwer produkcyjny uruchamia agenta crunu i sam pobiera swoje środowisko, a workflow tylko dostarcza kod i restartuje usługę. Zobacz systemd.
Unieważnianie tokenu
Otwórz token i wybierz Revoke. Jego następne logowanie zostanie odrzucone, a krok, który już trwa, kończy się z tym, co otrzymał. Jeśli token mógł wyciec, unieważnij go, wymień klucze środowisk, do których miał dostęp, i wygeneruj ponownie zapisane w nich wartości u ich dostawców.
Zobacz także
Odpowiedzi na pytania
Nie ma tu odpowiedzi? Napisz na support@crunu.com, a odpowie ci człowiek.
Czy akcja setup-crunu jest w GitHub Marketplace?
Nie. Skopiuj jej dwa pliki do .github/actions/setup-crunu/ w swoim repozytorium albo zainstaluj crunu w jednym kroku trzema zwykłymi poleceniami.
Czy zadanie potrzebuje uprawnienia id-token: write?
Tylko jeśli token usługowy ma powiązanie CI (OIDC). crunu prosi wtedy GitHub o token, którego audience to twój serwer Crunu.
Czy uruchamiane polecenie może odczytać CRUNU_TOKEN?
crunu run nigdy nie przekazuje poleceniu własnych danych logowania. Ustaw token tylko w kroku, który uruchamia crunu, i uruchamiaj crunu przez exec.
Czy to działa na runnerach z Windows?
Nie. crunu działa na runnerach z Linuksem i macOS, na amd64 i arm64.