Zmienne środowiskowe i sekrety
Nauczą się Państwo bezpiecznie zarządzać poufnymi informacjami i konfiguracjami zależnymi od środowiska w GitHub Actions.
Zmienne środowiskowe i sekrety to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Zmienne środowiskowe i sekrety: podstawy
Witamy w lekcji 3! W CI/CD często trzeba konfigurować potoki za pomocą dynamicznych wartości lub poufnych informacji.
Właśnie tutaj niezbędne stają się zmienne środowiskowe i sekrety. Umożliwiają one dostosowywanie przepływów pracy do różnych scenariuszy i bezpieczne przetwarzanie poufnych danych.
Dlaczego używać ich w CI/CD?
Wyobraźmy sobie wdrażanie do różnych środowisk (programistycznego, stagingowego i produkcyjnego) lub łączenie się z usługami zewnętrznymi za pomocą kluczy API.
- Elastyczność: Zmienne środowiskowe umożliwiają zmianę działania bez modyfikowania pliku przepływu pracy.
- Bezpieczeństwo: Sekrety chronią poufne dane, takie jak hasła i tokeny API, przed ujawnieniem.
- Wielokrotne użycie: Konfigurację można zdefiniować raz i wykorzystywać w wielu zadaniach lub krokach.
Zmienne środowiskowe w Actions
Zmienna środowiskowa to wartość o dynamicznej nazwie, która może wpływać na sposób działania uruchomionych procesów. W GitHub Actions zmienne środowiskowe są kluczowe dla tworzenia konfigurowalnych przepływów pracy.
Można definiować własne zmienne środowiskowe lub korzystać z wielu wbudowanych zmiennych udostępnianych przez GitHub Actions.
Wbudowane zmienne środowiskowe GitHub Actions
GitHub Actions automatycznie udostępnia wiele przydatnych, wstępnie zdefiniowanych zmiennych środowiskowych. Dostarczają one informacji o repozytorium, uruchomieniu przepływu pracy i innych elementach kontekstu.
Na przykład GITHUB_SHA to skrót zatwierdzenia, a GITHUB_REF to nazwa gałęzi lub tagu, który uruchomił przepływ pracy.
Dostęp do nich uzyskuje się za pomocą obiektu kontekstu github w wyrażeniach albo bezpośrednio jako do zmiennych powłoki, jeśli zostaną przypisane do env.
name: Print Context Variables
on: [push]
jobs:
display_info:
runs-on: ubuntu-latest
steps:
- name: Show commit SHA
run: echo "Commit SHA: ${{ github.sha }}"
- name: Show branch/tag ref
run: echo "Ref: ${{ github.ref }}"Własne zmienne środowiskowe: zakres przepływu pracy
Własne zmienne środowiskowe można definiować na poziomie przepływu pracy lub zadania. Zmienne zdefiniowane na poziomie przepływu pracy są dostępne dla wszystkich zadań i kroków w ramach tego przepływu.
Aby je ustawić, należy użyć słowa kluczowego env na najwyższym poziomie pliku przepływu pracy.
name: Workflow-level Env Var
on: [push]
env:
GREETING_MESSAGE: "Hello from Workflow!"
jobs:
my_job:
runs-on: ubuntu-latest
steps:
- name: Access workflow variable
run: echo "${{ env.GREETING_MESSAGE }}" # Access via env context
- name: Access workflow variable (shell)
env:
MY_VAR_IN_SHELL: ${{ env.GREETING_MESSAGE }}
run: echo "$MY_VAR_IN_SHELL" # Access as shell variableWłasne zmienne środowiskowe: zakres zadania i kroku
W przypadku bardziej szczegółowych potrzeb zmienne środowiskowe można definiować na poziomie zadania lub kroku. Zmienna zdefiniowana dla zadania jest dostępna we wszystkich jego krokach, natomiast zmienna zdefiniowana na poziomie kroku jest dostępna tylko w tym jednym kroku.
Umożliwia to precyzyjne sterowanie konfiguracją.
name: Job & Step-level Env Vars
on: [push]
jobs:
my_job:
runs-on: ubuntu-latest
env:
JOB_VAR: "Value for this job"
steps:
- name: Access Job-level variable
run: echo "Job Var: ${{ env.JOB_VAR }}"
- name: Step-specific variable
env:
STEP_VAR: "Value for this step"
run: echo "Step Var: ${{ env.STEP_VAR }}"
- name: Try to access step var in another step
run: echo "Trying to access: ${{ env.STEP_VAR }}" || true # Will be emptyWprowadzenie do sekretów GitHub
Zmienne środowiskowe świetnie nadają się do przechowywania danych, które nie są poufne, ale co zrobić z informacjami poufnymi, takimi jak klucze API, hasła do baz danych lub prywatne tokeny?
Właśnie do tego służą sekrety GitHub. Umożliwiają bezpieczne przechowywanie poufnych informacji i korzystanie z nich w przepływach pracy bez ujawniania ich w kodzie repozytorium ani w dziennikach.
- Szyfrowane: Są bezpiecznie przechowywane przez GitHub.
- Ukrywane: Są automatycznie ukrywane w dziennikach przepływów pracy.
- Kontrolowany dostęp: Są dostępne tylko dla określonych przepływów pracy.
Tworzenie sekretów GitHub
Sekrety tworzy się i zarządza nimi w ustawieniach repozytorium lub organizacji w GitHubie, a nie bezpośrednio w plikach przepływów pracy.
- Otwórz Ustawienia repozytorium.
- Przejdź do sekcji Sekrety i zmienne > Actions.
- Kliknij Nowy sekret repozytorium (lub sekret organizacji, jeśli ma mieć szerszy zakres).
- Podaj nazwę (np.
MY_API_KEY) i wklej wartość.
Po zapisaniu nie można ponownie wyświetlić wartości sekretu — można go tylko zaktualizować lub usunąć.
Używanie sekretów w przepływach pracy
Aby użyć sekretu, należy odwołać się do niego za pomocą obiektu kontekstu secrets w przepływie pracy, podobnie jak używa się env w przypadku zmiennych środowiskowych.
GitHub automatycznie ukrywa sekrety w dziennikach, zastępując ich wartości ciągiem ***, aby zapobiec przypadkowemu ujawnieniu.
name: Use a Secret Demo
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Display a secret (redacted)
run: echo "My secret key is: ${{ secrets.MY_API_KEY }}"
# GitHub Actions automatically redacts the value in logs.
- name: Pass secret to an environment variable
env:
API_KEY_ENV: ${{ secrets.MY_API_KEY }}
run: echo "API Key in env: $API_KEY_ENV"Najlepsze praktyki dotyczące bezpieczeństwa sekretów
Bezpieczne zarządzanie sekretami ma kluczowe znaczenie dla integralności potoku CI/CD. Zawsze należy przestrzegać następujących zasad:
- Minimalne uprawnienia: Dostęp do sekretów należy przyznawać tylko tam, gdzie jest to bezwzględnie konieczne.
- Nigdy nie umieszczaj sekretów na stałe w kodzie: Nie należy osadzać sekretów bezpośrednio w plikach przepływów pracy ani w żadnym kodzie repozytorium.
- Unikaj zapisywania w dziennikach: Mimo że GitHub ukrywa sekrety, należy unikać niestandardowych poleceń echo, które mogłyby przypadkowo ujawnić ich fragmenty.
- Regularnie je zmieniaj: Sekrety należy okresowo zmieniać, aby ograniczyć ryzyko ich przejęcia.
- Specyficzne dla środowiska: Należy używać różnych sekretów w środowiskach programistycznym, stagingowym i produkcyjnym.
Szybkie sprawdzenie: zmienne środowiskowe a sekrety
Podsumowanie: bezpieczne konfiguracje
Doskonale! Udało się Państwu poznać sposób zarządzania konfiguracjami w przepływach pracy GitHub Actions.
- Zmienne środowiskowe pomagają wprowadzać do uruchomień przepływu pracy niesensytywne, dynamiczne dane, które można dostosowywać na poziomie przepływu pracy, zadania lub kroku.
- Sekrety mają kluczowe znaczenie dla bezpiecznego przechowywania poufnych informacji, takich jak klucze API, ponieważ pozostają zaszyfrowane i nie są ujawniane w publicznym kodzie.
- Podczas pracy z sekretami należy zawsze stosować dobre praktyki bezpieczeństwa, aby chronić wdrożenia przed podatnościami.
Opanowanie tych zagadnień gwarantuje, że potoki CI/CD będą zarówno elastyczne, jak i bezpieczne!
Często zadawane pytania
Czy lekcja „Zmienne środowiskowe i sekrety” jest bezpłatna?
Tak — pełny tekst „Zmienne środowiskowe i sekrety” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Zmienne środowiskowe i sekrety”?
Nauczą się Państwo bezpiecznie zarządzać poufnymi informacjami i konfiguracjami zależnymi od środowiska w GitHub Actions. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Zmienne środowiskowe i sekrety”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wprowadzenie do Continuous Deployment
- Wdrażanie do środowiska stagingowego
- Zmienne środowiskowe i sekrety
- Wdrażanie na produkcję z bramkami akceptacji