Environment Variables और Secrets

Machine Learning के लिए CI/CD

Ravi Bhadauria

Machine Learning Engineer

Contexts

  • प्री-डिफाइंड वैरिएबल और डेटा की जानकारी एक्सेस करें
    • workflow runs
    • variables
    • runner environments
    • jobs और steps
  • ${{ context.XXX }} एक्सप्रेशन सिंटैक्स से contexts एक्सेस करें
  • इस कोर्स में इस्तेमाल contexts
    • github: workflow run की जानकारी
    • env: workflow में सेट वैरिएबल
    • secrets: workflow को उपलब्ध नाम और वैल्यूज़
    • job: करंट जॉब की जानकारी
    • runner: मशीन की जानकारी
1 https://docs.github.com/en/actions/learn-github-actions/contexts
Machine Learning के लिए CI/CD

Variables

  • नॉन-सेंसिटिव जानकारी plain text में स्टोर करें
    • compiler flags, usernames, file paths
  • env key के वैल्यू के रूप में घोषित करें
  • जहाँ परिभाषित है, उसी स्तर से global/local scope नियंत्रित होता है
  • env context से ${{ 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 }}."
Machine Learning के लिए CI/CD

Secrets

  • सेंसिटिव जानकारी encrypted रूप में स्टोर करें
    • passwords, API keys
  • वैल्यूज़ को secrets context से एक्सेस करें
    • ${{ secrets.SuperSecret }}
  • इन्हें input या environment variable की तरह स्टोर कर सकते हैं
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 प्रिंट करना

    steps:
    - name: Print secret
      run: |
        echo "my secret is \
        ${{ secrets.SuperSecret }}"
    
  • आउटपुट

वर्कफ़्लो लॉग की इमेज, जहाँ वास्तविक secret वैल्यू की जगह *** प्रिंट होता है

Machine Learning के लिए CI/CD

Secrets सेट करना

रीपोजिटरी लैंडिंग पेज पर settings टैब दिखाती इमेज

  • Security > Secrets and Variables > Actions पर जाएँ

secret टैब कैसे चुनें, यह दिखाती इमेज

Machine Learning के लिए CI/CD

Secrets सेट करना

secret का नाम और वैल्यू कैसे सेट करें, यह दिखाती इमेज

Machine Learning के लिए CI/CD

GITHUB_TOKEN secret

  • GitHub Actions द्वारा दिया गया बिल्ट-इन secret
  • workflow actions चलाने में उपयोग होता है
    • रीपोजिटरी क्लोन करना और कोड फ़ेच करना
    • issues और pull requests खोलना/बंद करना
    • issues और pull requests पर कमेंट करना
  • हर GitHub Actions workflow में अपने-आप उपलब्ध
    • ${{ secrets.GITHUB_TOKEN }} से एक्सेस करें
  • permissions को ज़रूरत अनुसार ट्यून कर सकते हैं
Machine Learning के लिए CI/CD

उदाहरण: pull request पर कमेंट करना

  • PR में कमेंट लिखने की permission दें
permissions: 
  pull-requests: write
  • ऑथराइज़ करने के लिए 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:

pull request पेज का स्निपेट, जिसमें github-actions बॉट की ऑटोमैटिक कमेंट दिखती है

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
Machine Learning के लिए CI/CD

अभ्यास करते हैं!

Machine Learning के लिए CI/CD

Preparing Video For Download...