Variables d'environnement et secrets

CI/CD pour le Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contextes

  • Accéder à l'info sur les variables et données prédéfinies
    • exécutions de flux de travaux
    • variables
    • environnements des exécuteurs
    • tâches et étapes
  • Accéder aux contextes avec la syntaxe d'expression ${{ context.XXX }}
  • Contextes utilisés dans ce cours
    • github : information sur l'exécution du flux de travaux
    • env : variables définies dans le flux de travaux
    • secrets : noms et valeurs accessibles au flux de travaux
    • job : info sur la tâche en cours
    • runner : info sur la machine
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD pour le Machine Learning

Variables

  • Stocker des informations non sensibles en texte clair
    • indicateurs du compilateur, noms d'utilisateur, chemins de fichiers
  • Déclarées comme valeur de la clé env
  • Portée globale/locale régie par le niveau de définition
  • Accès via le contexte env : ${{ 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 pour le Machine Learning

Secrets

  • Stocker des informations sensibles de façon chiffrée
    • mots de passe, clés d'API
  • Accéder aux valeurs via le contexte secrets
    • ${{ secrets.SuperSecret }}
  • Peut être utilisé comme entrée ou variable d'environnement
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 }}
  • Impression d'un secret

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

Image du journal du flux de travaux montrant que *** est imprimé au lieu de la vraie valeur du secret

CI/CD pour le Machine Learning

Définir des secrets

Image montrant l'onglet Settings sur la page d'un dépôt

  • Aller à Security > Secrets and Variables > Actions

Image montrant comment sélectionner l'onglet secret

CI/CD pour le Machine Learning

Définir des secrets

Image montrant comment définir le nom et la valeur du secret

CI/CD pour le Machine Learning

Secret GITHUB_TOKEN

  • Secret intégré fourni par GitHub Actions
  • Sert à exécuter des actions du flux de travaux
    • Cloner le dépôt et récupérer le code
    • Ouvrir et fermer des enjeux et des demandes de tirage
    • Commenter des enjeux et des demandes de tirage
  • Disponible automatiquement dans chaque flux de travaux GitHub Actions
    • Accès via ${{ secrets.GITHUB_TOKEN }}
  • Les autorisations peuvent être ajustées finement
CI/CD pour le Machine Learning

Exemple : commenter une demande de tirage

  • Accorder l'autorisation d'écrire des commentaires dans une demande de tirage (PR)
permissions: 
  pull-requests: write
  • Utiliser GITHUB_TOKEN pour autoriser
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:

Extrait de la page d'une demande de tirage montrant un commentaire automatique du robot github-actions

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

Passons à la pratique !

CI/CD pour le Machine Learning

Preparing Video For Download...