Miljövariabler och hemligheter

CI/CD för maskininlärning

Ravi Bhadauria

Machine Learning Engineer

Kontexter

  • Åtkomst till information om fördefinierade variabler och data
    • workflow-körningar
    • variabler
    • körmiljöer
    • jobb och steg
  • Åtkomst till kontexter via uttryckssyntaxen ${{ context.XXX }}
  • Kontexter som används i kursen
    • github: information om workflow-körningen
    • env: variabler definierade i workflödet
    • secrets: namn och värden tillgängliga för workflödet
    • job: information om det aktuella jobbet
    • runner: information om maskinen
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD för maskininlärning

Variabler

  • Lagra icke-känslig information i klartext
    • kompilatorsflaggor, användarnamn, filsökvägar
  • Deklareras som värde för nyckeln env
  • Globalt/lokalt omfång styrs av den nivå där variabeln definieras
  • Nås från env-kontexten som ${{ 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 för maskininlärning

Hemligheter

  • Lagra känslig information krypterat
    • lösenord, API-nycklar
  • Nå värden via secrets-kontexten
    • ${{ secrets.SuperSecret }}
  • Kan lagras som indata eller miljövariabel
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 }}
  • Skriva ut hemlighet

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

Bild av workflow-loggen som visar att *** skrivs ut i stället för det faktiska hemlighetsvärdet

CI/CD för maskininlärning

Konfigurera hemligheter

Bild som visar fliken Settings på ett repositorys startsida

  • Gå till Security > Secrets and Variables > Actions

Bild som visar hur man väljer fliken Secrets

CI/CD för maskininlärning

Konfigurera hemligheter

Bild som visar hur man anger namn och värde för en hemlighet

CI/CD för maskininlärning

GITHUB_TOKEN-hemligheten

  • Inbyggd hemlighet tillhandahållen av GitHub Actions
  • Används för att utföra åtgärder i workflödet
    • Klona repositoryt och hämta kod
    • Öppna och stänga issues och pull requests
    • Kommentera issues och pull requests
  • Automatiskt tillgänglig i alla GitHub Actions-arbetsflöden
    • Nås via ${{ secrets.GITHUB_TOKEN }}
  • Behörigheter kan anpassas efter behov
CI/CD för maskininlärning

Exempel: kommentera en pull request

  • Ge behörighet att skriva kommentarer i PR
permissions: 
  pull-requests: write
  • Använd GITHUB_TOKEN för autentisering
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:

Utdrag från en pull request-sida som visar en automatisk kommentar från github-actions-boten

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
CI/CD för maskininlärning

Nu kör vi en övning!

CI/CD för maskininlärning

Preparing Video For Download...