Variables d'environnement et secrets

CI/CD pour le Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contextes

  • Accéder aux infos sur les variables et données prédéfinies
    • exécutions de workflows
    • variables
    • environnements de runners
    • jobs et étapes
  • Accéder aux contextes avec la syntaxe d'expression ${{ context.XXX }}
  • Contextes utilisés dans ce cours
    • github : informations sur l'exécution du workflow
    • env : variables définies dans le workflow
    • secrets : noms et valeurs disponibles pour le workflow
    • job : infos sur le job en cours
    • runner : infos 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 clair
    • options du compilateur, noms d'utilisateur, chemins de fichiers
  • Déclarées comme valeur de la clé env
  • Portée globale/locale selon 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 }}
  • Les utiliser comme entrée ou variable d'environnement
steps:
  - name: Hello world action
    env: # Définir le secret comme variable d'env
      super_secret: ${{ secrets.SuperSecret }}

with: # Ou comme entrée super_secret: ${{ secrets.SuperSecret }}
  • Affichage d'un secret

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

Image du journal de workflow montrant que *** est affiché à la place de la valeur réelle du secret

CI/CD pour le Machine Learning

Définir des secrets

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

  • Allez à Security > Secrets and Variables > Actions

Image montrant la sélection de 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
  • Utilisé pour exécuter des actions du workflow
    • Cloner le dépôt et récupérer le code
    • Ouvrir/fermer des issues et des pull requests
    • Commenter des issues et des pull requests
  • Disponible automatiquement dans chaque workflow GitHub Actions
    • Accès via ${{ secrets.GITHUB_TOKEN }}
  • Droits ajustables avec précision
CI/CD pour le Machine Learning

Exemple : commenter une pull request

  • Accorder les droits d'écriture de commentaires dans les 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 page de pull request montrant un commentaire automatique du bot 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...