Variabile de mediu și secrete

CI/CD pentru Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contexte

  • Accesați informații despre variabile predefinite și date
    • rulări ale workflow-ului
    • variabile
    • medii de execuție ale runner-ului
    • job-uri și pași
  • Accesați contextele cu sintaxa de expresie ${{ context.XXX }}
  • Contextele utilizate în acest curs
    • github: informații despre rularea workflow-ului
    • env: variabilele definite în workflow
    • secrets: nume și valori disponibile workflow-ului
    • job: informații despre job-ul curent
    • runner: informații despre mașina de execuție
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD pentru Machine Learning

Variabile

  • Stocați informații nesensibile în text simplu
    • flaguri pentru compilator, nume de utilizatori, căi de fișiere
  • Declarate ca valoare pentru cheia env
  • Domeniul global/local este controlat de nivelul la care sunt definite
  • Accesate din contextul env ca ${{ 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 pentru Machine Learning

Secrete

  • Stocați informații sensibile în mod criptat
    • parole, chei API
  • Accesați valorile prin contextul secrets
    • ${{ secrets.SuperSecret }}
  • Pot fi stocate ca variabilă de intrare sau de mediu
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 }}
  • Afișarea secretului

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

Imagine din jurnalul workflow-ului care arată că în loc de valoarea reală a secretului se afișează ***

CI/CD pentru Machine Learning

Configurarea secretelor

Imagine care arată fila Settings pe pagina unui repository

  • Navigați la Security > Secrets and Variables > Actions

Imagine care arată cum se selectează fila Secrets

CI/CD pentru Machine Learning

Configurarea secretelor

Imagine care arată cum se setează numele și valoarea unui secret

CI/CD pentru Machine Learning

Secretul GITHUB_TOKEN

  • Secret integrat, furnizat de GitHub Actions
  • Utilizat pentru acțiuni în cadrul workflow-ului
    • Clonarea repository-ului și preluarea codului
    • Deschiderea și închiderea issue-urilor și pull request-urilor
    • Comentarea pe issue-uri și pull request-uri
  • Disponibil automat în orice workflow GitHub Actions
    • Accesat prin ${{ secrets.GITHUB_TOKEN }}
  • Permisiunile pot fi ajustate la nivelul dorit
CI/CD pentru Machine Learning

Exemplu: comentariu pe un pull request

  • Acordați permisiuni pentru scrierea de comentarii în PR
permissions: 
  pull-requests: write
  • Utilizați GITHUB_TOKEN pentru autorizare
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 din pagina unui pull request care arată un comentariu automat al botului github-actions

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
CI/CD pentru Machine Learning

Să exersăm!

CI/CD pentru Machine Learning

Preparing Video For Download...