Biến môi trường và Secrets

CI/CD cho Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Contexts

  • Truy cập thông tin về biến và dữ liệu định sẵn
    • lượt chạy workflow
    • biến
    • môi trường runner
    • jobs và steps
  • Truy cập contexts bằng cú pháp ${{ context.XXX }}
  • Contexts dùng trong khóa học này
    • github: thông tin về lượt chạy workflow
    • env: biến đặt trong workflow
    • secrets: tên và giá trị khả dụng cho workflow
    • job: thông tin về job hiện tại
    • runner: thông tin về máy chạy
1 https://docs.github.com/en/actions/learn-github-actions/contexts
CI/CD cho Machine Learning

Biến

  • Lưu thông tin không nhạy cảm ở dạng văn bản thường
    • cờ compiler, tên người dùng, đường dẫn tệp
  • Khai báo dưới khóa env
  • Phạm vi toàn cục/cục bộ tùy mức định nghĩa
  • Truy cập từ context env dưới dạng ${{ 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 cho Machine Learning

Secrets

  • Lưu thông tin nhạy cảm dưới dạng mã hóa
    • mật khẩu, khóa API
  • Truy cập qua context secrets
    • ${{ secrets.SuperSecret }}
  • Có thể lưu làm input hoặc biến môi trường
steps:
  - name: Hello world action
    env: # Đặt secret làm biến môi trường
      super_secret: ${{ secrets.SuperSecret }}

with: # Hoặc làm input super_secret: ${{ secrets.SuperSecret }}
  • In secret

    steps:
    - name: Print secret
      run: |
        echo "my secret is \
        ${{ secrets.SuperSecret }}"
    
  • Kết quả

Ảnh log workflow cho thấy *** được in thay vì giá trị secret thực

CI/CD cho Machine Learning

Thiết lập secrets

Hình ảnh tab Settings trên trang chính của repository

  • Vào Security > Secrets and variables > Actions

Hình minh họa cách chọn tab secret

CI/CD cho Machine Learning

Thiết lập secrets

Hình minh họa cách đặt tên và giá trị cho secret

CI/CD cho Machine Learning

Secret GITHUB_TOKEN

  • Secret tích hợp do GitHub Actions cung cấp
  • Dùng để thực hiện hành động trong workflow
    • Clone repo và lấy mã
    • Mở/đóng issues và pull requests
    • Bình luận trên issues và pull requests
  • Tự động có trong mọi workflow GitHub Actions
    • Truy cập qua ${{ secrets.GITHUB_TOKEN }}
  • Có thể tinh chỉnh quyền phù hợp
CI/CD cho Machine Learning

Ví dụ: bình luận trên pull request

  • Cấp quyền ghi bình luận trong PR
permissions: 
  pull-requests: write
  • Dùng GITHUB_TOKEN để ủy quyền
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:

Ảnh chụp từ trang pull request cho thấy bình luận tự động bởi bot github-actions

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

Ayo berlatih!

CI/CD cho Machine Learning

Preparing Video For Download...