Omgevingsvariabelen en secrets

CI/CD voor Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contexten

  • Toegang tot info over vooraf gedefinieerde variabelen en data
    • workflowruns
    • variabelen
    • runner-omgevingen
    • jobs en stappen
  • Gebruik contexten met de expressiesyntaxis ${{ context.XXX }}
  • Contexten in deze cursus
    • github: info over de workflowrun
    • env: variabelen gezet in de workflow
    • secrets: namen en waarden die beschikbaar zijn voor de workflow
    • job: info over de huidige job
    • runner: info over de machine
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD voor Machine Learning

Variabelen

  • Sla niet-gevoelige info op als platte tekst
    • compilerflags, gebruikersnamen, bestandspaden
  • Gedefinieerd als waarde voor de sleutel env
  • Globaal/lokaal bereik hangt af van het niveau van definitie
  • Toegang via de env-context als ${{ 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 voor Machine Learning

Secrets

  • Sla gevoelige info versleuteld op
    • wachtwoorden, API-sleutels
  • Benader waarden via de secrets-context
    • ${{ secrets.SuperSecret }}
  • Opslaan kan als input of omgevingsvariabele
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 }}
  • Secret afdrukken

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

Afbeelding van de workflowlog die laat zien dat *** wordt geprint in plaats van de werkelijke secretwaarde

CI/CD voor Machine Learning

Secrets instellen

Afbeelding met het tabblad Settings op de startpagina van een repository

  • Ga naar Security > Secrets and variables > Actions

Afbeelding die laat zien hoe je het tabblad Secret selecteert

CI/CD voor Machine Learning

Secrets instellen

Afbeelding die toont hoe je de naam en waarde van een secret instelt

CI/CD voor Machine Learning

GITHUB_TOKEN-secret

  • Ingebouwde secret van GitHub Actions
  • Gebruikt om workflowacties uit te voeren
    • Repo clonen en code ophalen
    • Issues en pull requests openen/sluiten
    • Reageren op issues en pull requests
  • Automatisch beschikbaar in elke GitHub Actions-workflow
    • Toegang via ${{ secrets.GITHUB_TOKEN }}
  • Rechten zijn fijn af te stemmen
CI/CD voor Machine Learning

Voorbeeld: commentaar op een pull request

  • Geef rechten om comments te schrijven in PR's
permissions: 
  pull-requests: write
  • Autoriseer met GITHUB_TOKEN
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 van de pull request-pagina met een automatische comment van de github-actions-bot

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

Laten we oefenen!

CI/CD voor Machine Learning

Preparing Video For Download...