ตัวแปรสภาพแวดล้อมและ Secrets

CI/CD สำหรับ Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contexts

  • เข้าถึงข้อมูลเกี่ยวกับตัวแปรและข้อมูล {{1}} ที่กำหนดไว้ล่วงหน้า
    • การรัน workflow
    • ตัวแปร
    • สภาพแวดล้อมของ runner
    • jobs และ steps
  • เข้าถึง context ด้วย expression syntax ${{ context.XXX }}
  • Context ที่ใช้ในคอร์สนี้
    • github: ข้อมูลเกี่ยวกับการรัน workflow
    • env: ตัวแปรที่กำหนดใน workflow
    • secrets: ชื่อและค่าที่ใช้งานได้ใน workflow
    • job: ข้อมูลเกี่ยวกับ job ปัจจุบัน
    • runner: ข้อมูลเกี่ยวกับเครื่อง
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD สำหรับ Machine Learning

ตัวแปร

  • เก็บข้อมูลที่ไม่ละเอียดอ่อนในรูปแบบข้อความธรรมดา
    • compiler flags, usernames, file paths
  • ประกาศเป็นค่าสำหรับ key env
  • ขอบเขต global/local ควบคุมโดยระดับที่กำหนด
  • เข้าถึงผ่าน context 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 สำหรับ Machine Learning

Secrets

  • เก็บข้อมูลละเอียดอ่อนในรูปแบบเข้ารหัส
    • passwords, API keys
  • เข้าถึงค่าผ่าน context secrets
    • ${{ secrets.SuperSecret }}
  • เก็บเป็น input หรือตัวแปรสภาพแวดล้อมได้
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 }}"
    
  • ผลลัพธ์

ภาพ workflow log ที่แสดง *** แทนค่าจริงของ secret

CI/CD สำหรับ Machine Learning

การตั้งค่า secrets

ภาพแสดงแท็บ Settings บนหน้า landing page ของ repository

  • ไปที่ Security > Secrets and Variables > Actions

ภาพแสดงวิธีเลือกแท็บ secret

CI/CD สำหรับ Machine Learning

การตั้งค่า secrets

ภาพแสดงวิธีกำหนดชื่อและค่าของ secret

CI/CD สำหรับ Machine Learning

GITHUB_TOKEN secret

  • secret ที่ GitHub Actions จัดเตรียมให้ในตัว
  • ใช้สำหรับดำเนินการต่าง ๆ ใน workflow
    • การ clone repository และดึงโค้ด
    • การเปิดและปิด issues และ pull requests
    • การแสดงความคิดเห็นบน issues และ pull requests
  • พร้อมใช้งานโดยอัตโนมัติใน GitHub Actions workflow ทุกรายการ
    • เข้าถึงด้วย ${{ secrets.GITHUB_TOKEN }}
  • ปรับสิทธิ์ได้ตามความเหมาะสม
CI/CD สำหรับ Machine Learning

ตัวอย่าง: การแสดงความคิดเห็นใน pull request

  • กำหนดสิทธิ์เขียน comment ใน PR
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 ที่แสดง comment อัตโนมัติจาก github-actions bot

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
CI/CD สำหรับ Machine Learning

มาฝึกกันเถอะ!

CI/CD สำหรับ Machine Learning

Preparing Video For Download...