Variabili d'ambiente e secret

CI/CD per Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contesti

  • Accedi a info su variabili e dati predefiniti
    • esecuzioni del workflow
    • variabili
    • ambienti del runner
    • job e step
  • Accedi ai contesti con la sintassi di espressione ${{ context.XXX }}
  • Contesti usati in questo corso
    • github: info sull'esecuzione del workflow
    • env: variabili impostate nel workflow
    • secrets: nomi e valori disponibili per il workflow
    • job: info sul job corrente
    • runner: info sulla macchina
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD per Machine Learning

Variabili

  • Archivia info non sensibili in testo semplice
    • flag del compilatore, username, percorsi file
  • Dichiarate come valore della chiave env
  • Ambito globale/locale in base al livello di definizione
  • Accesso dal contesto env con ${{ 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 per Machine Learning

Secret

  • Archivia info sensibili in modo crittografato
    • password, chiavi API
  • Accedi ai valori tramite il contesto secrets
    • ${{ secrets.SuperSecret }}
  • Puoi passarli come input o variabile d'ambiente
steps:
  - name: Hello world action
    env: # Imposta il secret come variabile d'ambiente
      super_secret: ${{ secrets.SuperSecret }}

with: # Oppure come input super_secret: ${{ secrets.SuperSecret }}
  • Stampa di un secret

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

Immagine del log del workflow che mostra *** al posto del valore reale del secret

CI/CD per Machine Learning

Impostare i secret

Immagine che mostra la scheda Settings nella pagina principale del repository

  • Vai a Security > Secrets and Variables > Actions

Immagine che mostra come selezionare la scheda dei secret

CI/CD per Machine Learning

Impostare i secret

Immagine che mostra come impostare nome e valore del secret

CI/CD per Machine Learning

Secret GITHUB_TOKEN

  • Secret integrato fornito da GitHub Actions
  • Usato per eseguire azioni del workflow
    • Clonare il repository e recuperare il codice
    • Aprire e chiudere issue e pull request
    • Commentare su issue e pull request
  • Disponibile automaticamente in ogni workflow di GitHub Actions
    • Accesso tramite ${{ secrets.GITHUB_TOKEN }}
  • Permessi configurabili nel modo corretto
CI/CD per Machine Learning

Esempio: commentare una pull request

  • Concedi i permessi per scrivere commenti nelle PR
permissions: 
  pull-requests: write
  • Usa GITHUB_TOKEN per autorizzare
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:

Estratto dalla pagina della pull request che mostra un commento automatico del bot github-actions

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

Esercitiamoci!

CI/CD per Machine Learning

Preparing Video For Download...