Zmienne środowiskowe i sekrety

CI/CD dla uczenia maszynowego

Ravi Bhadauria

Machine Learning Engineer

Konteksty

  • Dostęp do predefiniowanych zmiennych i danych
    • uruchomienia przepływów pracy
    • zmienne
    • środowiska runnerów
    • zadania i kroki
  • Dostęp do kontekstów za pomocą składni ${{ context.XXX }}
  • Konteksty używane w tym kursie
    • github: informacje o uruchomieniu przepływu pracy
    • env: zmienne ustawione w przepływie pracy
    • secrets: nazwy i wartości dostępne dla przepływu pracy
    • job: informacje o bieżącym zadaniu
    • runner: informacje o maszynie
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD dla uczenia maszynowego

Zmienne

  • Przechowuje niewrażliwe informacje jako zwykły tekst
    • flagi kompilatora, nazwy użytkowników, ścieżki plików
  • Deklarowane jako wartość klucza env
  • Zakres globalny/lokalny zależy od poziomu definicji
  • Dostęp przez kontekst env jako ${{ env.ENV_VAR }}
name: Greeting on variable day
# Global env
env:
  Greeting: Hello

jobs: greeting_job: runs-on: ubuntu-latest # Local env: scoped to greeting_job env: First_Name: Ravi
steps: - run: | echo "${{ env.Greeting }} \ ${{ env.First_Name }}."
CI/CD dla uczenia maszynowego

Sekrety

  • Przechowuje wrażliwe informacje w postaci zaszyfrowanej
    • hasła, klucze API
  • Dostęp do wartości przez kontekst secrets
    • ${{ secrets.SuperSecret }}
  • Można przekazać jako zmienną wejściową lub środowiskową
steps:
  - name: Hello world action
    env: # Set the secret as an env var
      super_secret: ${{ secrets.SuperSecret }}

with: # Or as an input super_secret: ${{ secrets.SuperSecret }}
  • Wyświetlanie sekretu

    steps:
    - name: Print secret
      run: |
        echo "my secret is \
        ${{ secrets.SuperSecret }}"
    
  • Wynik

Obraz logu przepływu pracy pokazujący wydrukowane *** zamiast rzeczywistej wartości sekretu

CI/CD dla uczenia maszynowego

Konfigurowanie sekretów

Obraz przedstawiający kartę ustawień na stronie repozytorium

  • Przejdź do Security > Secrets and Variables > Actions

Obraz pokazujący wybór karty sekretów

CI/CD dla uczenia maszynowego

Konfigurowanie sekretów

Obraz pokazujący ustawianie nazwy i wartości sekretu

CI/CD dla uczenia maszynowego

Sekret GITHUB_TOKEN

  • Wbudowany sekret dostarczany przez GitHub Actions
  • Służy do wykonywania akcji w przepływie pracy
    • Klonowanie repozytorium i pobieranie kodu
    • Otwieranie i zamykanie zgłoszeń oraz pull requestów
    • Komentowanie zgłoszeń i pull requestów
  • Automatycznie dostępny w każdym przepływie pracy GitHub Actions
    • Dostęp przez ${{ secrets.GITHUB_TOKEN }}
  • Uprawnienia można precyzyjnie dostosować
CI/CD dla uczenia maszynowego

Przykład: komentowanie pull requesta

  • Nadanie uprawnień do pisania komentarzy w PR
permissions: 
  pull-requests: write
  • Autoryzacja za pomocą GITHUB_TOKEN
permissions: 
  pull-requests: write 
steps:
  - name: Comment PR
    uses: thollander/actions-comment-pull-request@v2
    with:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      message: |
        Hello world ! :wave:

Fragment strony pull requesta z automatycznym komentarzem bota github-actions

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
CI/CD dla uczenia maszynowego

Czas na ćwiczenia!

CI/CD dla uczenia maszynowego

Preparing Video For Download...